久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

ARM Linux板從零移植OpenCV 4.x:交叉編譯、依賴管理與性能調(diào)優(yōu)

ARM Linux板從零移植OpenCV 4.x:交叉編譯、依賴管理與性能調(diào)優(yōu) 做嵌入式視覺、尤其是拿到一塊陌生的 ARM 開發(fā)板時(shí)“移植 OpenCV”一定避不開。這一篇循序漸進(jìn)的實(shí)操記錄人數(shù)我不單獨(dú)展開直接從我在一塊 Cortex-A 級別 ARM Linux 板子上移植 OpenCV 4.x 的過程中抽出的核心步驟按環(huán)境、依賴、編譯、上線運(yùn)行、性能調(diào)優(yōu)的順序?qū)?。先交代兩個前提宿主機(jī)器是 x86_64 的 Linux 環(huán)境目標(biāo)板是 ARM 架構(gòu)的 Linux 系統(tǒng)這是目前最常見的“宿主機(jī)編譯、目標(biāo)板運(yùn)行”的嵌入式開發(fā)場景。如果你目標(biāo)是 AArch64也就是 arm64 架構(gòu)除了工具鏈前綴和個別參數(shù)不同流程完全一樣。想強(qiáng)調(diào)的是移植不等于把 OpenCV 源碼放到板子里直接 make。ARM 板大多受限于存儲空間和處理能力在板上編譯既慢又容易卡死更可靠的手段是交叉編譯在性能強(qiáng)大的宿主機(jī)器上生成目標(biāo)板可執(zhí)行的庫文件與可執(zhí)行程序最后拷貝到板子上驗(yàn)證。這篇文章會陪你走完全部流程最后一小節(jié)還有我自己反復(fù)踩過幾輪的調(diào)優(yōu)心得。系列前一篇已經(jīng)提過幾處通用“經(jīng)驗(yàn)包”這一篇則是完整版以一次獨(dú)立的板級移植作為眼下唯一主線。1. 移植前必須確認(rèn)的硬件與工具鏈?zhǔn)聦?shí)拿到一臺 ARM 板子多數(shù)人第一反應(yīng)是找 datusheet看處理器能跑多快、內(nèi)存多大這當(dāng)然對但開始動 CMake 之前還有更關(guān)鍵的問題工具鏈與板子是否匹配。工具鏈版本、處理器架構(gòu)、跟浮點(diǎn)運(yùn)算相關(guān)的 ABI 約定任何一項(xiàng)對不上都會讓后續(xù)的編譯過程出現(xiàn)一系列怪異錯誤。1.1 交叉編譯是移植的起點(diǎn)不是唯一選項(xiàng)交叉編譯的原理很簡單在主機(jī)上用一套針對 ARM 目標(biāo)的編譯器生成代碼目標(biāo)板只負(fù)責(zé)運(yùn)行。OpenCV 本身是 C/C 項(xiàng)目源碼用到的編譯器特性不會特別新但依賴的第三方庫在交叉編譯時(shí)是真正的難點(diǎn)因?yàn)槊總€庫都需要用目標(biāo)層的工具鏈重新編譯一遍這是很多人開始沒有心理準(zhǔn)備的地方。 為什么不直接到板子上編譯我在某型號 ARM 板子試過4 核處理器2GB 內(nèi)存編譯一個完整 OpenCV 大概需要 poke 近半小時(shí)而且編到中途內(nèi)存耗盡常見得很。板子系統(tǒng)里還沒有完整 build-essential 工具鏈的也大有人在所以交叉編譯“更大幾率”是對的做法。當(dāng)然如果板子內(nèi)存充足、系統(tǒng)里已有可用的編譯環(huán)境直接在板上編也是可行的但如果你做的是產(chǎn)品預(yù)研后續(xù)需要反復(fù)改配置、加模塊交叉編譯的整個流程更可控。1.2 建立符合目標(biāo)板的根文件系統(tǒng)交叉編譯的 OpenCV 編譯期環(huán)境需要基礎(chǔ) C/C 庫和系統(tǒng)頭文件這些來自目標(biāo)板的系統(tǒng)根目錄。建議構(gòu)造一個專門的主機(jī)目錄例如 /opt/arm-rootfs用板子的根文件系統(tǒng)內(nèi)容填充它至少要包含 lib、usr/lib、usr/include 這幾個關(guān)鍵目錄。在這個目錄里目標(biāo)板的 libc.so、pthread、dl 等基礎(chǔ)庫和頭文件都會使用到。 很多供應(yīng)商發(fā)布的 SDK 包里已經(jīng)自帶根文件系統(tǒng)或工具鏈目錄用起來也比較穩(wěn)妥。如果沒有現(xiàn)成的就從板子上直接把整個根文件系統(tǒng)打包過來再解包到這個目錄。拿板子系統(tǒng)時(shí)要注意不要只拷貝 /lib 和 /usr/lib因?yàn)楹芏鄮旌皖^文件在 /usr/local 下尤其是你自己之前裝過的依賴。干脆把整塊根文件系統(tǒng)鏡像掛載或解包避免遺漏。1.3 工具鏈接口與處理器特性的常見誤區(qū)我犯過也用一件事編譯器用 arm-linux-gnueabihf 開頭代表 ARMv7 硬浮點(diǎn)如果板子其實(shí)是 AArch64那么必須使用 aarch64-linux-gnu 前綴。多個工具鏈前綴不要亂挑最好的辦法是檢查板子的內(nèi)核信息或者供應(yīng)商 SDK 文檔一次性給自己記錄下面這些參數(shù)。檢查項(xiàng)命令/方法對 OpenCV 的影響處理器架構(gòu)板內(nèi)執(zhí)行uname -m決定工具鏈前綴與 -march 參數(shù)是否支持 NEON查看 /proc/cpuinfo 里的 Features包含 neon 才行影響 CPU_BASELINE 與 NEON 使能浮點(diǎn) ABI工具鏈名稱含 hf 通常是 hardfp但最好用readelf -A驗(yàn)證決定鏈接時(shí)是否報(bào) VFP 寄存器錯誤根文件系統(tǒng) libc 版本板內(nèi)執(zhí)行l(wèi)dd --version工具鏈 sysroot 的 libc 不能比板子新太多工具鏈和系統(tǒng)根目錄還有兩個容易踩進(jìn)去的坑。第一個是工具鏈自帶的 sysroot 與板子的 libc 版本不匹配通常會出現(xiàn) cannot find -lstdc 或 GLIBC_2.34 not found 這類運(yùn)行時(shí)報(bào)錯解決方法是盡量采用供應(yīng)商配套 SDK。第二個是不要用主機(jī)的 /usr/lib 來滿足交叉編譯的查找種下的錯誤會在鏈接后期才爆發(fā)后面第四部分會專門展開。2. 依賴庫的順序排列與版本鎖定剛開始接觸 OpenCV 時(shí)我一直以為它是個自包含的庫直到有一天在板子上跑 imread 讀取常規(guī)圖片返回的 Mat 是空的才明白它如果想讀 jpg/png就必須在編譯期看到對應(yīng)的解碼后端。這個道理在交叉編譯場景里更嚴(yán)峻主機(jī)的這些后端庫不能直接復(fù)用必須在編譯 OpenCV 前為目標(biāo)板準(zhǔn)備一套 ARM 版本。2.1 先弄清楚完整依賴圖譜再動手OpenCV 的模塊化結(jié)構(gòu)決定了依賴“按需引入”的魅力。不開 DNN 就不用碰 protobuf不開 GUI 窗口就不用編譯高層的圖形工具庫不加視頻采集功能就不需要外接視頻后端。先做一個清單再決定每個模塊要不要。 我日常最常保底的一組是核心、圖像處理、圖像編碼、視頻采集和窗口顯示模塊。圍繞它們依賴可分為以下幾類基本壓縮庫任何帶壓縮性質(zhì)的圖片格式都繞不開的底層庫先編它后面的依賴都直接或間接需要它。圖片格式解碼庫PNG、JPEG、TIFF 三個常用格式的解碼庫編碼解碼都靠它們完成。攝像頭采集后端V4L2 相關(guān)接口庫Linux 下攝像頭幀采集的標(biāo)準(zhǔn)入口。并行庫選項(xiàng)TBB 這類庫屬于可選項(xiàng)不開啟也可以用 pthread 完成并行但板子核多且性能關(guān)鍵時(shí)往往會加它。我的建議是為了減少環(huán)境不確定第一版編譯只保留核心、圖像處理、圖像編碼、視頻采集這四個模塊將界面和 DNN 全部關(guān)閉。等版子在板上能跑通最小 Demo再往里加其他模塊。編譯期減少依賴驗(yàn)證周期短出問題時(shí)定位也大幅度快于一次性全量。2.2 交叉編譯依賴庫的通用操作流程依賴庫的構(gòu)建方式各不相同但大體遵循一個固定姿勢先 configure再 make再 install 到根文件系統(tǒng)目錄。以常見的圖片格式解碼庫為例通常你會見到這樣的功能步驟tar -xzf libxxx.tar.gz cd libxxx ./configure --prefix/opt/arm-rootfs/usr --hostarm-linux-gnueabihf --enable-shared make -j4 make install有一部分庫用 cmake 構(gòu)建的也很常見只要注意兩點(diǎn)指定 CMAKE_INSTALL_PREFIX 指向系統(tǒng)根目錄并讓 cmake 找到同一套交叉工具鏈。在做這一步時(shí)我習(xí)慣用一個臨時(shí)環(huán)境變量把工具鏈地址帶出來既避免反復(fù)寫活活的路徑也能保證依賴庫之間使用同一條編譯鏈。 編譯順序基本按依賴箭頭反向來最底層的基礎(chǔ)壓縮庫最先編圖片格式解碼庫在上層OpenCV 最后。貪方便打亂順序常常導(dǎo)致鏈接階段 libxxx.so 引用了一堆 undefined reference。如果你發(fā)現(xiàn)一個庫鏈接時(shí)依賴另一個庫就回頭重新排一下順序沒有捷徑。2.3 版本選擇的三個原則依賴庫版本與 OpenCV 版本之間的兼容問題比大多數(shù)人想象的更關(guān)鍵。某次我為了性能直接選了很新的圖片格式解碼庫結(jié)果 OpenCV 的接口調(diào)用方式跟不上報(bào)了一堆隱晦的 undefined symbol。后來換回板子上常用的大版本舊一點(diǎn)的分支立刻安靜下來??偨Y(jié)出三條可行的原則第一依賴庫版本不要超過 OpenCV 源碼官方分支里對應(yīng)的 README 推薦版本。第二以板子系統(tǒng)里已有庫的版本為中心優(yōu)先匹配主版本一致如果板子已經(jīng)有人驗(yàn)過某個版本你直接沿用是最安全的。第三編譯依賴庫時(shí)保留窗口的configure參數(shù)日志避免日后需要重建時(shí)無據(jù)可依。環(huán)境變量也可以幫上大忙。交叉編譯時(shí)把 PKG_CONFIG_LIBDIR 指向 /opt/arm-rootfs/usr/lib/pkgconfig并且讓它只定位到系統(tǒng)根目錄里的 .pc 文件這樣 OpenCV 在查依賴時(shí)就不會撞到主機(jī)上的同名文件。在我某次操作中這個變量一度是腳本里最關(guān)鍵的一行少了它再標(biāo)準(zhǔn)的前綴設(shè)置都可能前功盡棄。3. 用構(gòu)建系統(tǒng)配置 OpenCV 的關(guān)鍵參數(shù)OpenCV 從 3.x 時(shí)代開始全面轉(zhuǎn)向 CMake到了 4.x 幾乎只有 CMake 一條路。交叉編譯時(shí)CMake 的配置參數(shù)直接決定生成的庫是給 x86 用的還是給 ARM 用的。很多第一次搞的人打開 CMake 界面就蒙我就把最關(guān)鍵的一組參數(shù)與一個可復(fù)用的配置文件寫下來這套配置翻過整個 ARM 團(tuán)隊(duì)后還會繼續(xù)用到。3.1 一份可用的交叉編譯配置文件在 OpenCV 源碼目錄之外放一個單獨(dú)的文件名字就叫 toolchain.arm.cmake內(nèi)容大致如下set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(TOOLCHAIN_PREFIX arm-linux-gnueabihf) set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g) set(CMAKE_SYSROOT /opt/arm-rootfs) set(CMAKE_FIND_ROOT_PATH /opt/arm-rootfs) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)也許你會問這第九行是什么意思前三行明確目標(biāo)系統(tǒng)是 ARM Linux告訴 CMake 不要走 x86 的文件路徑第四到第六行把編譯器切換成交叉工具鏈第七行設(shè)置系統(tǒng)根目錄最后四行限定查找程序、庫、頭文件、包時(shí)的路徑模式。PROGRAM NEVER 保證它去找主機(jī)命令而不是在根文件系統(tǒng)里找開發(fā)工具后面三個 ONLY 則強(qiáng)制所有庫和頭文件只從目標(biāo)根文件系統(tǒng)里找隔離主機(jī)干擾。 如果用 AArch64 板子只需要把 TOOLCHAIN_PREFIX 換成 aarch64-linux-gnu。關(guān)于 arm-linux-gnueabihf 和 arm-linux-gnueabi 的區(qū)別簡單講gnueabi 對應(yīng)軟浮點(diǎn)gnueabihf 對應(yīng)硬浮點(diǎn)絕大多數(shù)現(xiàn)代 ARM Linux 系統(tǒng)都用硬浮點(diǎn)工具鏈但老版本內(nèi)核和舊板子可能只有軟浮點(diǎn)版本這從 boot 時(shí)打印的 CPU 信息能看出來。3.2 決定最終產(chǎn)物的模塊選項(xiàng)配置的時(shí)候OpenCV 默認(rèn)會嘗試把能編的模塊都編上這可能不是你想要的。用 BUILD_LIST 壓縮模塊集合往往能省下大量時(shí)間與磁盤空間還能減少被依賴的第三方庫范圍。我的這組參數(shù)一直拿來反復(fù)用cmake -S . -B build-arm \ -DCMAKE_TOOLCHAIN_FILE../toolchain.arm.cmake \ -DCMAKE_BUILD_TYPERelease \ -DCMAKE_INSTALL_PREFIX/usr/local/opencv-arm \ -DBUILD_LISTcore,imgproc,imgcodecs,videoio,highgui \ -DWITH_OPENCLOFF \ -DWITH_OPENMPOFF \ -DWITH_TBBOFF \ -DWITH_GTKOFF \ -DWITH_V4LON \ -DBUILD_SHARED_LIBSON關(guān)鍵選項(xiàng)的含義我列個表比事后猜含義方便參數(shù)取值作用與理由BUILD_LISTcore,imgproc,...只編譯必要的模塊減少依賴與體積WITH_GTKOFF不編 GUI 后端絕大多數(shù)無屏幕板子用不到WITH_V4LON打開 Linux 視頻采集后端攝像頭場景需要BUILD_SHARED_LIBSON默認(rèn)生成 .so方便排查問題后面可再改靜態(tài)方案WITH_OPENMP按需板子核心多且追求速度才開多核小內(nèi)存慎用WITH_TBB按需引入并行庫會帶來額外依賴先 OFF跑通后再試如果你之后需要用 OpenCV 的 DNN 模塊跑神經(jīng)網(wǎng)絡(luò)還得把 DNN 加入 BUILD_LIST同時(shí)準(zhǔn)備 protobuf 依賴。建議第一版全部關(guān)閉穩(wěn)字當(dāng)頭。3.3 指令集優(yōu)化NEON 與 VFPv4 的啟用邊界ARM 平臺的性能優(yōu)化往往繞不開 NEON 指令集OpenCV 4.x 在 CMake 里對 ARM 優(yōu)化有比較直觀的控制方式。局部板子若是 ARMv7通常會在命令行加上 -DCPU_BASELINENEON,VFPV3 或類似參數(shù)如果板子支持 VFPv4則寫成 NEON,VFPV4。過早地全局泛化會出問題尤其當(dāng)你手里的板子其實(shí)不支持某些指令時(shí)貿(mào)然打開 NEON 會讓編譯出的庫在運(yùn)行階段直接非法指令。 我有一個穩(wěn)妥做法先在板內(nèi)看 /proc/cpuinfo 的 Features 是否包含 neon再決定要不要開啟。若包含在 CMake 參數(shù)里加上 NEON若不包含寧可什么也別動用通用編譯參數(shù)。對于 AArch64 架構(gòu)NEON 是默認(rèn)啟用且沒有選擇的余地再去手動加反而多余。 還要特別提醒一個坑不要在交叉編譯環(huán)境里使用 -mcpunative它會把編譯器所在的主機(jī) CPU 特性當(dāng)成目標(biāo) CPU 特性釀成的在板子上必崩無疑。目標(biāo)板具體用什么 CPU就寫什么 CPU比如明確指定 -mcpucortex-a7而不是依賴宿主機(jī)自動探測。4. 編譯鏈接階段最容易踩的坑依賴就緒、CMake 參數(shù)入湖進(jìn)入真正 make 階段好戲才剛開始。在 x86 上非常正常的命令到了 ARM 交叉編譯環(huán)境卻可能冒出一整套秀存在感的報(bào)錯。這一節(jié)記下我自己遇到的三類真問題不看報(bào)錯本身先看環(huán)境因素。4.1 編譯崩潰不一定是內(nèi)存不足我第一次在筆記本電腦上跑 OpenCV 全量交叉編譯時(shí)順手用了 make -j12結(jié)果編到中段 GCC 進(jìn)程莫名被殺死終端輸出一欄一欄的 Killed。當(dāng)時(shí)下意識覺得是磁盤空間問題后來用 free -h 看到是內(nèi)存耗盡大量并行編譯進(jìn)程占滿內(nèi)存系統(tǒng)開始把編譯進(jìn)程殺掉控制臺卻不報(bào)詳細(xì)的編譯錯誤。 交叉編譯對主機(jī)內(nèi)存的要求往往被低估尤其 OpenCV 這類 C 模板大戶每個編譯單元都可能讓人內(nèi)存達(dá)到一兩百 MB。解圍辦法很簡單先降到 make -j4如果還是被殺死就降 -j2同時(shí)確認(rèn) temp 分區(qū)剩余內(nèi)存足夠。后續(xù)我組包里特意保留自主板的多次 -j4極少再出問題。附加建議關(guān)閉其他大量占用內(nèi)存的應(yīng)用再用 make -j$(nproc) 直接胡來的情況必須忍住只在你確認(rèn)內(nèi)存充裕時(shí)才用。4.2 鏈接 error 時(shí)先檢查文件屬性而非看錯信息提示錯誤大多數(shù)是 undefined reference to xxx或者 cannot find -lxxx。這倆時(shí)候第一反應(yīng)是去補(bǔ)什么包那就容易誤判。真正原因經(jīng)常是它在系統(tǒng)根目錄里找到的庫文件其實(shí)是 x86 版本或者是兩個不同架構(gòu)的庫被 CMake 串在一起。 我的排查順序先定位報(bào)錯里涉及的 .so 文件在哪個目錄然后執(zhí)行 file /路徑/libxxx.so看輸出的架構(gòu)描述。它應(yīng)該是類似 ELF 32-bit LSB shared object, ARM, EABI5 這樣的結(jié)果。如果看到 x86-64就說明庫是從主機(jī)帶進(jìn)去的交叉編譯過程根本不該用。此時(shí)回到依賴庫編譯安裝那一步重新在系統(tǒng)根目錄里安裝 ARM 版本。 第二個反復(fù)遇到的鏈接問題是某個依賴庫確實(shí)編好了但 OpenCV 仍然說找不到。這通常是 CMAKE_FIND_ROOT_PATH 沒設(shè)置或者設(shè)置了配置里少加了 ONLY 模式。系統(tǒng)根目錄里明明有對應(yīng)版本卻找不到優(yōu)先回看 3.1 節(jié)里的配置文件把查找模式的四個參數(shù)一個一個對齊。4.3 運(yùn)行時(shí)非法指令常見誘因編譯鏈接順利通過并不代表萬事大吉。復(fù)制到板子上一分鐘跑程序直接崩掉后臺常常給出 Illegal instruction (core dumped)這就是典型的編譯時(shí)啟用了目標(biāo)板不支持指令的表現(xiàn)。我經(jīng)歷過一次狼狽。某塊核芯其實(shí)支持 Cortex-A7但我在編譯參數(shù)里寫了更適合更新處理器的 NEON 變體運(yùn)行時(shí)直接打到非法指令上。 這類問題的排查邏輯是反向的先確認(rèn)編譯時(shí)開過哪些指令優(yōu)化參數(shù)再核對板子 /proc/cpuinfo 里的 Features。如果編譯時(shí)啟用 NEON但板子的 Features 里連 neon 都沒有那么程序大概率就是這樣崩去掉相關(guān)參數(shù)重編即可。另一個更省事的辦法在板子上執(zhí)行 readelf -A 可執(zhí)行文件名查看 Tag_CPU_arch 和 Tag_NEON_preserved 之類的標(biāo)記對比板子的實(shí)際能力你很快就知道自己編出了什么水平的產(chǎn)物。 有時(shí)候非法指令與可用變量不夠有關(guān)系比如低版本內(nèi)核配高版本編譯庫但這很少見。先從指令集、從工具鏈和板子的匹配度排查是永遠(yuǎn)用在最前面的方向。5. 部署到 ARM 板上的驗(yàn)證方法等 make 完成你的構(gòu)建目錄里會生成一批 .so 和可執(zhí)行程序。不要急著把整個目錄復(fù)制到板子上更好的思路是設(shè)定一個清晰的目標(biāo)目錄結(jié)構(gòu)把需要的東西統(tǒng)一收集起來再同步過去。這一節(jié)講講安裝階段和上板驗(yàn)證的細(xì)節(jié)。5.1 兩個安裝路徑的區(qū)別在 CMake 配置里有兩個容易弄混的概念CMAKE_INSTALL_PREFIX 決定安裝到哪個前綴目錄DESTDIR 是臨時(shí)把一個安裝過程重定向到指定根目錄的手段。 我的習(xí)慣是先指定 CMAKE_INSTALL_PREFIX/usr/local/opencv-arm然后在 make 完成后的安裝階段使用臨時(shí)目錄make install DESTDIR/tmp/opencv-arm-target/這會在 /tmp/opencv-arm-target/usr/local/opencv-arm 下生成完整的頭文件與動態(tài)庫。然后我只需要把 /tmp/opencv-arm-target/ 里的內(nèi)容按目錄結(jié)構(gòu)拷貝到板子根目錄再在板子上把 /usr/local/opencv-arm/lib 加入動態(tài)庫搜索路徑即可。 當(dāng)初一開始用的是直接把安裝前綴指向系統(tǒng)根目錄 /usr后來發(fā)現(xiàn)這樣極易污染宿主機(jī)的環(huán)境也不方便多版本管理。用 DESTDIR 的臨時(shí)目錄做法宿主機(jī)完全隔離板子端也隨時(shí)可以刪掉整個目錄不需要重裝系統(tǒng)驗(yàn)證。5.2 編譯一個最小驗(yàn)證程序到了這一步最急迫的就是用一段足夠簡單、又能覆蓋基礎(chǔ)功能的程序驗(yàn)證 OpenCV 是否真正可用。我多次用來驗(yàn)證的就是圖像讀取加灰度轉(zhuǎn)換#include stdio.h #include opencv2/opencv.hpp int main(int argc, char** argv) { if (argc 2) { printf(usage: %s image.jpg\n, argv[0]); return 1; } cv::Mat img cv::imread(argv[1]); if (img.empty()) { printf(imread failed\n); return 1; } cv::Mat gray; cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY); printf(image size: %d x %d\n, img.cols, img.rows); printf(gray pixel[0,0]: %d\n, gray.atuchar(0, 0)); return 0; }編譯時(shí)直接指定 OpenCV 的頭文件和庫目錄至少這種明確路徑不依賴板子上的 pkg-config便于排查問題arm-linux-gnueabihf-g demo.cpp \ -I/tmp/opencv-arm-target/usr/local/opencv-arm/include/opencv4 \ -L/tmp/opencv-arm-target/usr/local/opencv-arm/lib \ -lopencv_core -lopencv_imgproc -lopencv_imgcodecs \ -o vision_demo把 vision_demo 與一張普通圖片 copy 到板子執(zhí)行 /vision_demo test.jpg。如果打印 output 正常說明最核心的 core、imgproc、imgcodecs 模塊二次鏈接無誤到這一步Arm 移植流程就基本跑通了。5.3 運(yùn)行時(shí)依賴是否齊全怎么判斷上板運(yùn)行也常有看到 error while loading shared libraries: libopencv_core.so.408: cannot open shared object file 之類輸出。這并不一定是 OpenCV 沒安裝到位而是系統(tǒng)動態(tài)鏈接器沒找到庫路徑。 在板子上執(zhí)行 ldd vision_demo會列出程序依賴的每個動態(tài)庫及搜索到的位置。像 libopencv_core.so.408 或 libstdc.so.6 顯示 not found就證明路徑配置不完整。簡單直接的方案是在板子上的 /etc/ld.so.conf 里加入一行 /usr/local/opencv-arm/lib再執(zhí)行 ldconfig讓系統(tǒng)重新掃描并建立鏈接緩存。 用 ldd 時(shí)順帶看一下 librt、libpthread 等依賴的指向如果某些基礎(chǔ)庫指向宿主機(jī)的 x86 版本抓取到板子上無意義需要回根文件系統(tǒng)里替換。判定是否標(biāo)準(zhǔn)首先要看目標(biāo)板系統(tǒng)根目錄里的同名庫版本與工具鏈自帶的 sysroot 是否同源如果版本不一致重新編譯對應(yīng)依賴庫是穩(wěn)妥路線。6. 圍繞性能與二次開發(fā)的實(shí)際調(diào)優(yōu)建議一旦最小 Demo 跑通剩下的問題就轉(zhuǎn)到“怎么更快、更省地方”。OpenCV 在 ARM 上有不少可以擠壓的余地但前提是要尊重板子本身的能力不要盲目跟風(fēng)開優(yōu)化選項(xiàng)。6.1 先測量再開啟優(yōu)化我有一次非常典型的經(jīng)歷在項(xiàng)目里聽說 NEON 對圖像處理加速效果明顯直接全量 NEON 編譯滿心以為板子上的圖像縮放性能會翻倍結(jié)果實(shí)測發(fā)現(xiàn)提升比預(yù)期低很多因?yàn)樗惴ù蟛糠謺r(shí)間卡在內(nèi)存拷貝上甚至有些場景因隨機(jī)訪問反而更慢。 所以任何優(yōu)化都要先有一個基準(zhǔn)數(shù)據(jù)。在板子上執(zhí)行一輪簡單的計(jì)時(shí)比如對同一張 720x480 圖片做 100 次縮放或?yàn)V波記錄平均耗時(shí)。之后開啟優(yōu)化選項(xiàng)再跑同一套數(shù)據(jù)對比才有效。不要依賴直觀感受圖像縮放這類操作在 ARM 上用 NEON 確實(shí)能快不少但如果瓶頸在內(nèi)存帶寬盲目 NEON 不會帶來質(zhì)變。 并行方面也有同樣的原則。TBB 或 OpenMP 都要產(chǎn)生線程管理成本若板子是二核四核且算法圖像較小你需要考慮開并行帶來的收益。我一般先關(guān)掉并行測試一次再打開并行對比一次確認(rèn)真正快了才會保留配置。這一原則對嵌入式視覺相當(dāng)有效。6.2 裁剪模塊與控制動態(tài)庫數(shù)量嵌入式產(chǎn)品發(fā)布時(shí)最關(guān)心可執(zhí)行產(chǎn)物體積與依賴數(shù)量。完整版 OpenCV 動態(tài)庫非常多安裝目錄動輒幾百 MB 甚至更大這在醫(yī)療、工業(yè)級設(shè)備上可以接受但在存儲緊張的板子上就遭罪了。我的建議根據(jù)項(xiàng)目實(shí)際算法邏輯精確設(shè)計(jì)模塊剪紙凡是沒用到的模塊一律不要編進(jìn)去。 BUILD_LIST 就是裁剪的有效入口。我自己的例子只留 core、imgproc、imgcodecs、videoio、highgui 五個模塊后安裝目錄體積能下降到幾百 MB 的四分之一左右。若后續(xù)不需要視頻捕獲把 videoio 去掉還能再少一截。DNN 如果不涉及神經(jīng)網(wǎng)絡(luò)推理堅(jiān)決不納入。 動態(tài)鏈接庫太多也影響啟動時(shí)間。產(chǎn)品最終形態(tài)可以把 OpenCV 與主程序一起靜態(tài)鏈接生成單個可執(zhí)行文件方便拷貝部署但開發(fā)階段保持動態(tài)庫方式更舒服出錯時(shí)不必反復(fù)重編。我在驗(yàn)證階段用動態(tài)庫出產(chǎn)品時(shí)再默認(rèn)調(diào)成靜態(tài)是相對平衡的方案。6.3 值得固化的移植流程走過的彎路都折騰完后建議把所有步驟沉淀成腳本否則三個月后再升級版本又要重新踩一遍。參考下列一個極簡腳本結(jié)構(gòu)把主干留下來#!/bin/bash export ROOTFS/opt/arm-rootfs export TOOLCHAINarm-linux-gnueabihf export PKG_CONFIG_LIBDIR${ROOTFS}/usr/lib/pkgconfig build_dep() { cd $1 ./configure --prefix${ROOTFS}/usr --host${TOOLCHAIN} make -j4 make install } build_dep zlib build_dep libpng build_dep libjpeg # 其余依賴類似 cmake -S opencv -B build-arm \ -DCMAKE_TOOLCHAIN_FILEtoolchain.arm.cmake \ -DCMAKE_BUILD_TYPERelease \ -DBUILD_LISTcore,imgproc,imgcodecs,videoio,highgui \ -DWITH_V4LON -DWITH_GTKOFF cmake --build build-arm -j4 make install DESTDIR/tmp/opencv-arm-target再配合拉一頁簡單的記錄寫明各依賴庫的版本號、CMake選項(xiàng)、測試結(jié)果以后在不同板子間復(fù)用摩目時(shí)會順很多。我上一輪完全照著這套腳本從一個平臺復(fù)刻到另一個相同架構(gòu)的板子除了工具鏈路徑略改幾乎沒有再花一個下午一起去調(diào)環(huán)境。如果你手頭還有幾塊不同板子正等著部署可以把這個流程當(dāng)作繼續(xù)往下走的模板。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
大香蕉综合网| 欧美精品三级黄片| av天堂影视中文在字幕在线中文| 亚洲天堂在线怕怕视频| 猛猛干| 97精品97久久| 少妇毛片久久| 男人的天堂2000| 女人的久久久| 人妻AV 中文字幕的| 九月丁香婷婷色| 日日夜夜精品视频| 日韩av在线精品观看| 色老大| 超碰在97| 国产女主播视频在线观看| 亚洲精品男人的天堂| 亚洲高清无码在线桃色| 日本1区2区不卡视频| 男人天堂2030| 日韩久射综合| 高颜值美女口爆高潮浪叫| 天天天乱色综合全| 国产1727欧美| 色九九综合AV| 亚洲的天堂网| 国产久久男人天堂| 91超碰在线播放| 日本九九久久99播| 久久九九一区二区三区成人| 天天摸夜夜摸| 亚洲人在线| 超碰亚洲97| 天天爽人人综合免费7799| 国产三级日产三级韩国三级| 日本性爱网址| 日本日皮视频逼| 亚洲无吗在线视频| 天天色综亚洲91污| 狠狠狠狠狠干| 午夜天堂精品久久久久91| 国产尹人在线视频免费| 中文字幕在线观看视频www| 91精品久久综合熟女| 日日碰狠狠添天天爽超| 国产日韩欧美三级片| 久草免费在线一区二区| 制服乱伦| 台欧久久精品视频| 亚洲美女精品九九视频| 国产婷婷综合在线观看| 久久精品店| 欧美一区二区观看在线| a久久| 观看视频图片一区二区三区| 91国产美女丝袜足交精品视频 | 久噜噜| 丰满熟女人妻一区二区三五十一路| 智利AV在线网| 26uuu最新| 久热在线精品免费观看| 久久精彩视频| 伊人青青一区成人视频在线观看区 | 久久久久久久久九九久孕交| 91超碰碰在线| 好爽视频在线观看视频| 精品国产91内射久久| 老熟女乱子伦中文字幕一区二区| 丁香五月成人| 丰满精品人妻少妇久久字幕| 91男同| 97色涩| 高跟丝袜AV专区国产| 亚洲日韩美国人妻| 五月综合婷婷久久网站| 色优久久| 久久久∴| 伊人麻豆传媒| 操高情无码| 国产激情久久| 久久久久78| 91亚洲情色| 嗯啊视频免费在线观看| 97色插| 久久久草草精品| 91精品国产91久久福利| 免费视频a级毛片免费视频| 98色网| 亚洲涩涩| 亲子敌伦对白在线播放| 欧美很很操视频| 用力操死我| 老司机福利社视频在线观看| 久草国产在线视频| 中文字幕88av在线| 熟女人妻一区二区三区| 色九月婷婷| 九九九九97| 久久久国产av美女私房| 亚洲骚女一区二区三区| 国产熟女无套内射| www.色综合| 欧美亚洲激情| 激情专区综合| 超碰97人妻自拍| 久草国产在线视频| 欧美日韩天堂| 二男一女成人A片| 射丝袜高跟鞋99| 凌辱美少妇久久aV| 色综合美国| 日韩精品一区二区人人人| 久久无码电影| 亚洲清纯唯美| 久久乐| 久久婷婷成人综合色怡春院| 五月丁香亭亭| aV中亚| 夜夜一区二区| 国产三级片在线观看| 欧美一级色| av草草在线电影| 国产亚洲禁久一区二区| 男人天堂毛片| 亚洲中文字幕精品久久久久久直播| 精品乱码在线观看| 国产三级电影免费观看| 精品国产乱码久久久影院| 乱欲一区二区| 久九色| 天天看天天综合成人网| 操操操五月天婷婷丁香影院| 天堂资源站| 操我无码| 欧美高清色| 亚洲一区二区三区久久 亚洲一区二区| 亚洲国产日韩精品久久久| 97久久视频| 人人妻人人澡人人爽人人精品浪潮| 九九无码视频| 蜜臀久久99精品久久久久| 婷婷性爱| 蜜乳Av成人片网站| 午夜一区| 青青草十区九区爱夜| 国产精品露脸在线观看| 天天舔天天日天天射| 国产日韩在线播放| 岛国免费黄色网址| 欧美高清91| 91亚·色| 最新啪啪视频| 91青青草| 性色高清..……| 五月香婷婷| 精品一区二区成人动漫| 亚洲熟女综合一区二区| 日韩中文字幕2020| AAA久久| 女人天堂av在线播放| 97 超碰 人人做 人人爱| 亚洲欧美在线观看2021| 免费a v| 黑人与人妻| 婷婷伊人网| 欧美性爽xyxOOOO| 欧美激情精品久久久| 99九九久久| 久久透逼视频| 99热婷婷一区二区三| 99亚亚热| 亚洲aV性爱| 插入逼91| 国产精品人妻免费精品| 超碰欧美97资源| 少妇同性| 亚洲,欧美,春色,另类| 五月丁香社区婷婷日韩欧美精品影院 | 亚洲欧美成人在线| 国产日韩精品人妻久久久久色欲网站| 欧美精品97| 精品欧美日韩在线观看| 丰满人妻一区| 久久免费精品96| 91在线综合网| 久久人妻丝袜一区二区三| 久久精品国产亚洲AV片多多 | 五月丁香六月| 99ri在线视频| 日本亚洲熟女视频| 性爱Av免费| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 六月色婷婷| 午夜福利在线合集| 素人一区二区三区日韩| 国产亚洲精品一区二区三区| 欧美中出| 欧美黄片免费在线观看视频| 精品人妻中文字幕高清| 五月婷亚洲精品天堂| AV中文字幕三四五| 伊人性在线视频| 中文字幕女同在线| 日本男人插女人的逼黄色| 长长久久免费视频| 性色一线| 亚洲欧洲小说图片视频 | 欧美性高潮| 国产AV人人夜夜澡人人爽麻豆| 久久一二三四五六七八九区区| 男人的天堂2018东京热啪啪啪| 日本高清加勒比| 亚洲一二三| 久久久久久久久久久999| 好吊色一区| 欧亚日韩三区| 人人澡人人澡人人| 综合亚洲网| 婷婷精品久久av影视| 日本在线15p| 熟妇女伦乱视频视频| 视频在线97| 国产97av| 国产1024在线播放| 狠日操| 九九探花视频在线观看| 六月激情婷婷| 国产夜夜操| 精品人妻一区二区三区视频| 午夜操一视频一区| 欧洲亚洲国产综合在线| 国产激情av女片自拍| 大伊香蕉在线视频免费| 日本在线不卡123| 亚洲欧美爆| 99精品伊人| 九九亚洲色在线观看| 97精品视频在线播放| 少妇高潮一区二区三区在线| 九九干| 亚洲欧美成人在线| 人人色人人射人人妻| 亚洲 欧美 另类 日韩 人妻一区| 性色综合网| 人人操人人爽人人操人人| 亚洲国产欧美另类自拍| 久久婷婷色| 99国内精品| 日韩图区| 亚洲欧美另类图片| 无码聚合| 欧美天天谢综合网| 另类图片五月天| 91视频在线观看18| 97亚洲综合电影| 亚洲人码13| 亚洲天天操| 郑州宾馆老熟女露脸啪啪| 五月婷婷综合激情| 九九九九免费视频| 艹精品| 日本曲间由美性生活片| 老司机福利社视频在线观看| 精品蜜乳AV免费观看| 欧美成人黄网色网站| 人人天天欧洲| 日韩精品资源专区二区| 99色色| 国产熟女自拍| 亚洲午夜福利视频| 国产精品一二三| 精品久久久久久无码| 超碰91在线| 美女干逼2| 亚洲电影中字一区二区| 一区=区三区视频| 亚洲图片视频小说| 国产成人免费观看在线视频| 亚洲自拍一区夜夜操| 色欲久久99国产精品久久久久久| 日本99视频| 嗯嗯啊啊啊啊轻点视频| 蜜乳av一区二区| 日韩欧美成人大香蕉| 97这里有精品| 91 在线亚洲| 999热这里只有精品| 无码少妇精品一区二区60岁老人| 欧美裸体美女日麻屄| 另类一区| 国产精品粉嫩福利在线| 欧美色五月| 一本大道青青| 五月婷在线| 啊啊啊啊好爽好舒服一区二区易域| 色综合久久88色综合久久天天| 麻豆精品天美| 亚洲成熟国产精品美女| 国产av色网| 色爱三区| 91美女视频直播| 操99| 97天堂| 色噜噜综合在线| 久草资源在线| 欧美色图亚洲色图成人在在线| 中文字幕第2页| 欧美色图天堂在线| 国产精品点击进入在线影院高清 | 亚洲精品人体| 东京热av男人的天堂| 亚洲三区视频| 色欲久久99精品久久| 婷婷五月成人| 免费岛国一级片| 日韩情色AV| 成全在线观看免费观看| 久久久月天| 中文字幕永久在线| a亚洲欧美色欲| 五月天色电影| 五月大香蕉| 中文字幕99999| 亚洲男人天堂网久久| 国产精品呦一区二区三区| 中文字幕免费看| 欧美有码激情视频一区二区三区| 中文字幕精品免费一区二区| 久久超碰av在线| 日本免费中文一区二区三区四区 | 精品久久99| 伊人丁香五月婷婷| 78m成人视线| 丁香五月天婷婷姐| 欧美99热| 亚洲国产婷婷在线播放| 久久国产乱子伦精品免费女,网站| 嗯嗯啊啊操死我| 国产精品自拍欧美在线| 亚洲一区中文精品| 精品少妇一区二区三区| 欧美久久毛片基地| 成人五月香网在线| 强奸乱伦αv片| 乱伦熟妇一区二区| 99色热| 亚洲永久永久永久永久一级一级一级精品 | 99性爱在线观看| 亚洲色图欧美色图另类图片| 国产熟女自拍| 日本999精品| 亚洲图片欧美日韩| 日本一级二级三级网站| 久草精品国产99| 日韩性色| 午夜九九| 亚洲偷91色| 青青草吊丝| www五月| 亚卅熟女乱色| 中文字幕中文字幕一区二区| 九九九免费视频| 色69大色97香蕉| 久久久久9| 久久久久密| 91色婷婷综合久久中文字幕二区| 久久久精品视频免费观看| 日本人妻伦在线中文字幕| 成人网站 免费观看| a亚洲欧美色欲| 97欧美在线| 一本一道久久综合久久| 国产欧洲精品亚洲午夜拍精品| 日韩一级二级在线| 日本熟妇熟色97一本在线观看| 久草福利在线资源站| 人妻 中文 日韩| 精品日韩中文在线| 免费观看国产小粉嫩喷水精品午| AAAA欧美日韩| 日本国产亚洲一区在线观看| 欧美影院一区二区三区| 久久永久无码人妻视频| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 亚洲色性| 十八禁啪啪视频| 91精品91久久久久77777俄罗斯老妇姓x| 很狠操| 啊啊啊啊啊好舒服视频| 性欧美第一页| 精品人妻一区二区三区视频在线| 91 偷| 巨乳特殊服务按摩| 久久超碰网| 欧美色偷偷| 91在线免费精品视频| 国产午夜福利专区综合| 人人玩人人添人人澡免费| 久久久久亚洲三级电影| 成人a大片在线观看| 在线中文字幕极品av| 日韩成人性爱电影在线播放| 亚洲操操操| 日韩欧亚太美不卡| 精品无码一区二区人妻久久蜜桃| 久久久亚洲熟妇资源| 奶水 人妻 哺乳 在线| 9久久精品| 波多野结衣之双飞调教在线播放 | 夜夜操夜夜爽夜夜高潮| 中文字幕av丝袜| 91 偷| 青娱乐淫乱1314| 福利视频一区二区微拍| 日韩无码成人电影| 成人日本精品九区| 91天天美女| 国产乱子伦久久精品综合一区二区三| 人人操人人干xxx| 欧美一级久久久久久久大片动画| 欧美性爱在线无码| 台湾肥佬网一区二区三区| 成人精品水蜜桃久久久久久久| 久久香蕉国产线看观看亚洲女人 | 国产欧美一区二区| 91精品国产长腿丝袜美女| 午夜精品久久99蜜桃的功能章节| gogogo免费高清看中国国语| 97婷婷色| 乱色老一区二区三区的观看方式 | 欧美专利1区2区3区4区5区免费| 麻豆 亚洲 97| 日产操逼| 99热色精品| 美欧老女人97| 综合夜夜| 天天爽人人综合免费7799| 99re6国产精品99re在线| 啊啊啊轻点在线观看| 国产无码精品无码| 爽爽淫人网| 精品一区二区久久| 岛国激情视频软件| 67194无码不卡| 婷婷性网| 久久这里只精品99re66图| 黄呦呦在线| 秋霞 色色| 亚洲五月天激情| 最新9久久久9免费视频| 丁香六月激情| 综合一区中亚洲国产成人综合精品 | 国产在线观看一区二区三区| 国产久久久久久| 欧美极品性爱天天射| 欧美激情久久久久| 免费97视频| 欧美成人A√在线一区二区| 色色色网站| 我要色综合网站| 自慰白浆在线观看| 天天操福利视频综合网站| 国产精品一区午夜福利| 后入式视频国产自| 国产乱人伦AVA麻豆软件.| 色九九九综合| 久久久久亚洲?V片无码V| 九九热超碰97亚洲最新香蕉| 一个国产在线综合网站| 物尤视频一区二区| 一级性爱啪啪视频| 亚洲综合九| 手机在线中文字幕国产 | 91国模| 五月天激情婷婷| 俞拍久久国应视频| 欧亚乱色熟一区二区三四区| a片 xxxx受爽视频| 欧美18禁91| 无码免费在线观看黄色片| 欧美色图私拍91| 天天干天天燥| 亚洲 欧美 综合 91| 色噜噜人妻丝袜a∨先锋影 | 亚欧高清| 内射中出日韩在线观看视频| 91av一区二区在线观看| 国产亚洲色婷婷久久99精品91| 久久久久久久久久久久欧美日| 色狠狠 - 百度| 天天日熟妇| 成人片在线播放| 无套后入双马尾| 99热色这里只有精品| 欧美日韩中文字幕人妻| 九久9热| 加勒比在线观看一区二区| 91久久伊人婷婷青青草| 青娱乐欧美激情一区二区| 98超碰日本| 操逼操操操91| 久久久久久久久久9| 日韩精品人妻系列无码天堂| 青娱乐老司机视频| 久热久| 在线播放中文字幕| 欧美后入| 亚洲色91C| 精品一二三区久久AAA片| 亚洲欧美综合图片| 欧美色天堂网在线视频| 日本一级二级三级网站| 91五十路| 91精品免费| 五月丁香六月激情| 亚洲一区在线观看欧洲 | 无遮挡男女激烈动态图| 日本九九久久99| 五月天激情国产综合婷婷婷| 亚洲影院无码在线| 一区超碰一区| 亚洲AV无码久久精品蜜桃小说| 日韩 欧美 另类 人妻| 色悠悠伊人网五月天| 久久国模av| 久久婷色| 免费一级特黄特色大片在线观看看| 成人国产二区三区在线,男女精品。| 老熟女91av| 久久性视频| 欧美日韩另类在线| 欧美人妻制服| 蜜桃精品一区二区三区久在线| 久久久久无码| 国产小u女在线观看| 草草草视频在线免费看| 大色网久久| 欧美伦乱爱| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 竹菊一区二区三区AV线| 亚洲av热热色| 亚洲国产剧情少妇激情| 99性爱| 91色色色| 色乱二区| 岛国激情视频软件| 国产精品嫩草久久久久| 亚洲97| 亚洲高清欧美总合| 欧美亚州综合网图片| 精品久久久久久久久久久久| 91亚洲精品青草| 亚洲色吧网| 1024日韩| 男人的天堂三级| 97超碰在线资源网站| 9/A片| 久久9精品视频| 五月婷婷色| 久久久久久AⅤ无码免费肉站| 91强热人妻| 亚洲好看强奸乱伦| 欧美懂色综合网| 一区二区高清视频| 九色黄站| 日韩精品一区二区高清| 日韩性爱啪啪视频| 无码不卡亚洲成?人片| 韩国一级做a久久久久| 97干在线视频| 97精品网| 久久专区| 婷婷干黄色| 黄片视频,下载| 女同女同恋久久级三级| 成人麻豆av电影网站| 免费啪啪一级视频| 日本Xx性爱| 激情av| 婷婷五月天成人网| 嗯啊不要啊在线| 亚洲av热热色| 一区,二区,三区视频| 99re只有精品| 丝袜视频一区二区在线播放国产中文| 欧美亚洲高清不卡| 久久久一区二区三区麻豆| 久久久亚洲熟妇资源| 色色97爱| 一级二级三级黑人无码| 欧美一区二区三区不卡高清视频| 不卡中文字幕aⅴ在线| 国产又黄又爽又刺激久久久久久 | 久久曰曰| 久久av网| 亚洲诱惑天堂 | av毛片aaaaa免费看| 日本黄色大片一级视频免费麻豆| 中文字幕av乱伦| 免费观看有码高清视频| 狠狠欧美| 校园春色家庭伦理欧美激情| 欧美激情精品| 国产欧美一级在线观看| 可以免费观看的AV| 亚州色站 日韩电影| 欧美日韩国产色五月综合在线| 久久久久成人网| 亚洲天天做日日做天天谢日日| 国产AV无码AV| 欧美亚州手机在线| 久久九九热| 中文字幕欧美日韩三级| 亚洲AV无码乱码在线观看性色| 青草青青久久久久久国产| 日日黄色三级网站| 屁股久久久久久| 手机在线中文字幕国产 | 啊啊啊啊啊啊好多水| 十八禁成人网站在线观看| 青青操青娱乐| 成人在线午夜视频一区| 日欧操屄| 屌色在线97视频| 亚洲日本大香蕉1| AA级电影三区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 91N综合网| 亚洲精品国产无码高清| 中文字幕 一区二区 亚洲无码| 啊啊啊久久久视频| 网站A V在线| 欧美日韩夜夜| 亚洲在线91| 91五月天| 成人日本片久久久蜜桃| 芊芊操逼视频无码| 老司机久久| 色综合一本| 91N五十路| 人人妻人人爽| 91c色| 亚洲熟女一区| 亚洲 自拍偷拍 欧美| 日韩在线97| 国产黄色剧情影片麻豆免费播放| 欧美一级黄色18片免费看| 超碰碰97| 婷婷av在线中文字幕| 天天日日日射| 啪啪视频免费在线观看| 免费农村成人少妇人妻Aa一区二区视频| 人妻另类| 99色在线视频| 久久69| 91亚洲人电影| 成人黑料社久久| 大香蕉92| 两性综合网| 久久粉色| 天天爽天天| 毛片久久| 久久欧洲| 精品无码秘 人妻一区二区| 99啪| 牛牛操视频逼| 欧美人妻另类在线| 搡老熟女老女人老熟妇免费视频| 久久久女人| 67914亚洲精品| 欧美激情综合网| 99热导航| 色婷婷激一区二区三区 | 国模精品娜娜一二三区 | 国产精品电影| 色香AV| 69精品人人人人| 在线A日本| 狠狠色五月亚洲91| 婷婷五月天小说| 国产亚洲精品久久久久小| 操亚州| 久操视频资源站公开| 国产成人五月天丁香花| 日韩国产品视频中文字| 乱伦av麻豆| 99re99在线视频| 狠狠久久亚洲欧美专区| 男女激情黄色网址| 东北女人性交| 日韩午夜国产| 国产成人在线观看综合| 国产精品美女久久久久久网站| 1204金沙人妻懂旧版免费| 超碰在线国产| 亚洲国产一级黄色视频| 久久久久久少妇| 欧美三级一级| 69精品久久久久中文字幕| 99无码狠狠久久| 夜夜爽爽夜夜精品视频| 玖玖97综合 | 天天影视色香色欲| 中文精品一区二去| av天堂电影网| 夜夜免费视频| 日本精品国产视频| 五月天大香蕉| 日韩性爱再线视频| 午夜男女爽爽爽影院视频| 久久久一区二区| 丝袜喷水在线| 综合色色婷婷| 成人免费福利在线观看| 网友自拍第一页| 97se综合| 午夜免费视频1000| 熟女乱伦A| 国产精品香蕉| 日韩青久久| 中文字幕人妻色偷偷久久皮| 超碰av人人人| 欧美黄片欧美黄片xxx| 亚洲好看强奸乱伦| 97色碰| 五十路一区无码| 超碰综合97在线| 色婷婷久久综合超碰| 成人精品电影| 日韩在线女优天天干| 97人人模人人爽人人| 大香蕉www.超碰| 超碰在线欧美性爱激情| 色九久| 欧美性高潮| 亚洲熟女一区二区| avav青青草久久夜| 97精选久久| 国产人妻精品一区二区三区秋霞| 自拍欧美| 久久色人体 | 久99在线免费观看视频| 黑人精品欧美一区二区蜜桃| 4虎在线视频| 日本超碰色精品| 国产人妻一区二区三区欧美毛片| 97精品视频免费| 中文字幕乱碼在线| 欧美78| 天美传媒在线一区| 欧美视频第二页| 欧美大色交| 91艹| 欧美色图另类图片| 黑丝制服中文字幕| 欧美97超碰| 久久加勒比| 乱操乱伦AV| 成人七区| 丁香九月激情| 五月婷婷六月激情| 亚欧美天堂在线| 99国产在线绯色一区| 中文字幕亚洲欧美在线不卡| 情侣操 逼视频99| 欧美性爱网97| 国产视频97| 久久三区四区| 国产无码三级视频在线观看| 国产精品嫩草影院午夜两性 | 久久夜精品一区二区三区| 熟女熟妇伦久久影院毛片一区二区 | 欧美大战久久久伊人| 岛国不卡超碰护士AV在线播放| 丝袜视频网国产90| 91精品老女人| 国产精品一区人妻精品阁在线| 久久久亚洲精品电影免费看| 欧美在线55555| 综合97久久| 久久久555| 嫩呦国产一区二区三区AV| 不卡一区二区日本视频| 99色在线| 成人在线视频一区| 亚洲欧美91| 欧美极品美女aaaaaa级黄片| 国产综合网站在线播放| 丁香六月婷婷| 色制服丝袜夫妻av一区| 极品出轨视频网站| 人人操,人人插| 牛黄色久午久| av麻豆啪啪| 日韩精品午夜操呦呦不卡影院| 久久免费99精品久久久久久| 欧美顶级黄片AAAAA在线免费看| 国产精品久久发布| 一区二区三区色综合| 欧美日本中字另类在线| 92福利社视频| 91九久| 天天天操天天天爱| 欧美日韩性爱电影在线| 国产男女无套视频免费观看| 加勒比综合九九99视频在线播放| 丰满熟妇大乳做爰| 亚洲精品一二区| 玖玖97综合 | 亚洲av淫乱| 啊啊啊快操我视频| 久久女人| 91九色精品熟女内射| 2017大香蕉国产精品久久| 久久老女人| 91人人臊| 色五月AV在线| 26uuu国产亚洲综合| 激情一区二区三区在线观看| 97超碰总站| 又粗又长又爽在线观看| 日韩一级二级| 78精品| 国产精选三级在线观看| 久久久久久久久久久999| 亚州综合色| 综合日本女人伊人| 91综合天天| 激情av| 99蜜月精品久久| 日本视频在线观看污污污| 蜜桃在线观看一区二区三区| 日韩无码一级黄色av片| 99精品在线| 欧美人妻少妇| 欧美色五月| 色香av| 99精品在线观看| 欧美91网| 午夜丁香婷婷| 九九久久久| 欧美激情综合| 欧美97超碰| 思思99热| 亚洲中文字幕在现观看| 欧美九九爱| 超碰日韩人妻| 欧美内射少妇| 久久首页| 成人黄页| 免费一级视频特黄色大片| 看看日B真人视频| 新版天堂中文资源8在线| 蜜桃臀一区二区三区久久| 秋霞一级视频在线观看免费| 久九9精品| 色婷婷狠狠| 精品78| 97色涩| 操逼操逼逼操操逼91 | 久精品无码av一区二免费国产在线观看 | 91精品国产91熟女| 麻豆天美电影一区二区| 免费a v| 九九九九免费高| 爱av免费| 国产一级内射高清视频| 国产性刺激| 新婚人妻扶着粗大强行坐下| 天天干夜夜操一区二区| 2020中文字幕| 97资源视频| 精品少妇一区二区| 操狠狠| 岛国色情视频在线观看| 男人 天堂 日 亚洲| 五月丁香社区婷婷日韩欧美精品影院| 九九热午夜欧亚国产视频| 国模精品娜娜一二三区| 亚洲精品自拍| AV中文字幕剧情1区2区3| 五月丁香啪啪| 熟女激情综合网| 久久精品国产97欧美精品亚洲 | 日韩国产中文字幕| 亚洲欧洲激情卡通另类文学四射小说网站| 97亚洲资源| 无码人妻丰满热妇又大又粗| 久久男人的天堂| 99www.bibizy香蕉资源国产一区二区三区高清 | 欧美18老人禁| 青青草原成人| 久久手机视直播| 伊人久久大香大香线蕉中文| 国产女人视频三四五区| 青青青草伊人精品| 丁香五月天婷婷姐| 色婷婷综合网站| 自拍偷拍 日韩欧美| 国产又粗又长又大的视频| 福利风月五月天影院| 99ri视频| 国产大学生口爆吞精合集| 午夜在线播放| 亚洲蜜臀精品视频久久| 岛国小电影| 99色热| 成人激情无码在线视频| 天天射天天操天天干天天吃2018 | 五月婷婷性爱| 午夜.DJ高清在线观看免费7| 日本在线999| av东京热男人的天堂| 大香蕉在线86| 91精品无码人妻系列| 国产野战露脸在线播放| 97色伦97色伦国产欧美| 好湿好紧视频| 欧美性少妇| 国产精品密臀网在线观看| 人妻精品综合中文字幕在线| 91干熟女| 图片区小说区| 欧美丰满少妇xx高潮| 麻豆国产视频精品观看| 97精品免费视频网站| 国产激情在线| 日韩电影天堂视频二区三区| 精品十三区| 欧美亚洲一区二区久久久婷精品大包诱| 免费A V在线| 亚洲AV无码久久久国产精品 | 丁香7月婷婷| 丝袜av一区二区三区| 歐美性天天| 操狠狠| 九九玖玖精品| 超碰 另类 欧美 | 青久操| 日韩精品99久久久久久中文字幕 | 久草综合网| 欧美色交| 久艹日日日| 少妇激情一区二区三区视频| 欧美丝袜91| 四虎影视国产精品| 日韩本不卡视频在线观看| 神马久久免费电影观看| www久久精品| 性色高清..……| 欧美激情在线观看视频| 久久 精品| 欧洲精品一级二级精品综合视频综合 | 视频不卡中文字幕| 亚洲影院成人| 精品蜜乳AV免费观看| 日韩无码精品综合久久| 尹人免费观看视频在线| 最新av中文字幕高清| 青青久久手机线视频| 婷婷午夜成人色中色| 性色av婷婷久久一区二区点复制| 久久婷五月| 黑丝少妇| 天天天天天天天天综合| 天天综合网入口~91| 欧美丰满少妇交换91欧美精品| 蜜桃臀一区二区三区久久| 91精品人妻一区二区三区蜜桃| 91狠狠综合久久| 大香蕉欧美| 操逼啊啊啊91| 成人三级片无码| 奸色色 男人天堂 天天射| 熟妇视频一区二区三区在线观看| 欧美久久人妻少妇一区二区| 999日韩中文精品观看视频。| 97超级欧美| 97超级久久| 欧美片第一页| 亚洲熟女中文字幕在线| 99热久| 蜜桃视频一区二区三区| 躁躁日曰躁2020| 日本黄色天堂| 人妻久久一区二区三区| 日韩Va亚洲va欧美Ⅴa久久| 熟妇在线视频一区二区| 97综合日韩| 97操B| 欧美在线永久天堂| 久热伊人| 60秒免费小视频| 欧美性高潮| 天天综合网日韩7799| 女人高潮抽搐喷水视频网站| 亚洲A色| 中出91视频| 国产精品嫩草影院免费| 欧美三级不卡| 午夜无码熟妇丰满人妻| 东京热一区二区中文字幕| AV不卡在线| 熟妇操花| 成人综合网 欧美| 国产白丝网站| 亚洲国产高清福利视频| 亚洲精品欧洲精品| 伊人国产AV| 久久久久成人亚洲国产| 麻豆 欧美 日韩| 九九九久久久W精品| 免费在线观看国内色片网站网址| 热久久91婷婷| 玖玖久久久| 黄在线| 乱久久久| 欧美综合娱乐久久| 久久本道| 欧美日韩在线小说 | 97爱爱影院| 亚洲欧美色图| 中文字幕日韩综合| 夜夜免费视频| 人妻一区视频| 日本不卡码黄色| 久久永久无码人妻视频| www.狠狠干.coom| 国产日产欧产美韩系列麻豆免费| 秋霞久久亚洲精品成人| 大香蕉综合| 老司机午夜精品视频| 久久久久久久 九九九九九九九 | 综合熟女| 日本不卡免费二区| 99日精品欧美国产| 天干天干天干天天做| 中文字幕aⅴ在线视频| 97超碰免费生活| 琪琪精品免费一区二区三区 | 九九九精品美女| 女人高潮大叫一级毛片| 欧美日综合| 久久久久国产精品片区无码直播| 亭亭在线资源| 韩国一级做A片免费的| 欧美超碰人妻97| 欧美精品久久久久久久久88| 欧美激情一| 91强奸乱轮| 亚洲欧美在线丝袜| 三级三久久线久久99久目本WW| 久草综合网| 国产农村妇女一区二区| 欧州91高潮| 蜜桃在线观看一区二区三区| 国内偷自视频区视频综合| 欧美熟妇操操视频| 精品久久久久av影院| 欲香欲色天天天综合和网| yellow网站免费观看日韩高清无码| 熟妇激情| 黑丝日韩av丝袜av| 日本三级久| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 青青草依人大香蕉| 婷婷五月天基地| 国内毛片欧美香蕉精品| 色综合潮| 成人性爱美曰韩| 自拍第一页| 欧美性天天影视| av无线看| 精品欧美日韩在线观看| 狠狠干狠狠色| 在线播放成人高清免费视频| 日本一区99| 两性综合网| 日韩精品亚洲一二三| 亚洲有码 视频一区| 嫩呦国产一区二区三区AV| 久日综合网| 成人婷婷丁香| 日韩99精品视频综合区 | 日本久久99| 熟女这里只有精品6| 夜夜操一区二区| 天无日色综合| 久久99九九九九6666免费观看软件| 久久久网站| 九九热av| 亚洲蜜臀懂色| 浓厚中出中文字幕在线| 中出20p| 国产美脚女优尤物在线观看| 伊人一级免费黄片| 欧美日韩亚洲少妇寂寞影院正在播放| 久久超碰亚洲人| 久久久久久国产无码精品| 亚洲久久久久| 日本五区不卡| 国产精品经典一卡久久久 | 天天干2019| 欧美麻豆成人同性GⅤ在线| 成人性生活高清视频在线播放| 是还免费视频1727我| 免费看美国人人爽,人人操| 淫荡熟女乱伦网| 日本精品一级二级三级| 丝袜喷水在线| 亚洲男人天堂Av| 亚洲第一无码播放立川理惠| 91狠狠综| 加勒比aⅴ| 久久久久久免费电影| 青娱乐 成人娱乐在线| 欧美国产日韩高清在线| 国产一区二区a毛片| 97色综合中文网| 四虎免费在线播放| 精品无码久久久久| 国产精品乱人伊人网| 婷婷五月天综合网| www.色婷婷色综合| 在线色导航| 欧洲综合无码| 人人操 欧美| 啊啊啊啊啊啊好多水| 亚洲中文sv| 国产日韩美女小穴视频网站不卡| 日韩钢筋无码高清啾啾啾| 强奸少妇AV导航网| 97超级久久强资源| 99热只有这里有精品| 国产精品69人妻无码久久久| 一区二区三区亚洲| 秋霞Av理论一级在线| 福利视频网站| 搡老女人老91二区| 欧美 日韩第一性色| 97精品网站| 超碰97人人乐| 青青操视频在线| 1024午夜激情男人的天堂| 无码男人天堂| 天天日天天射天天干| 97精品视频免费| 色超碰综合| 嫩草 人人网精品| 欧美性色综合网| 日韩精品99久久久久久中文字幕| 天天爽夜夜操| 蜜桃色色网站视频三区| 超碰日本97美女人妻人人玩人人爱| 91在线精品| 5252色欧美在线| 97精品中文字幕| 亚洲熟女偷拍在线观看| 大屁股熟女一区二区三区| 久久人妻97久久久久久久|