亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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ū)?。先交代兩個(gè)前提宿主機(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)除了工具鏈前綴和個(gè)別參數(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)包”這一篇?jiǎng)t是完整版以一次獨(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)一系列怪異錯(cuò)誤。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)槊總€(gè)庫都需要用目標(biāo)層的工具鏈重新編譯一遍這是很多人開始沒有心理準(zhǔn)備的地方。 為什么不直接到板子上編譯我在某型號 ARM 板子試過4 核處理器2GB 內(nèi)存編譯一個(gè)完整 OpenCV 大概需要 poke 近半小時(shí)而且編到中途內(nèi)存耗盡常見得很。板子系統(tǒng)里還沒有完整 build-essential 工具鏈的也大有人在所以交叉編譯“更大幾率”是對的做法。當(dāng)然如果板子內(nèi)存充足、系統(tǒng)里已有可用的編譯環(huán)境直接在板上編也是可行的但如果你做的是產(chǎn)品預(yù)研后續(xù)需要反復(fù)改配置、加模塊交叉編譯的整個(gè)流程更可控。1.2 建立符合目標(biāo)板的根文件系統(tǒng)交叉編譯的 OpenCV 編譯期環(huán)境需要基礎(chǔ) C/C 庫和系統(tǒng)頭文件這些來自目標(biāo)板的系統(tǒng)根目錄。建議構(gòu)造一個(gè)專門的主機(jī)目錄例如 /opt/arm-rootfs用板子的根文件系統(tǒng)內(nèi)容填充它至少要包含 lib、usr/lib、usr/include 這幾個(gè)關(guān)鍵目錄。在這個(gè)目錄里目標(biāo)板的 libc.so、pthread、dl 等基礎(chǔ)庫和頭文件都會使用到。 很多供應(yīng)商發(fā)布的 SDK 包里已經(jīng)自帶根文件系統(tǒng)或工具鏈目錄用起來也比較穩(wěn)妥。如果沒有現(xiàn)成的就從板子上直接把整個(gè)根文件系統(tǒng)打包過來再解包到這個(gè)目錄。拿板子系統(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 前綴。多個(gè)工具鏈前綴不要亂挑最好的辦法是檢查板子的內(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 寄存器錯(cuò)誤根文件系統(tǒng) libc 版本板內(nèi)執(zhí)行l(wèi)dd --version工具鏈 sysroot 的 libc 不能比板子新太多工具鏈和系統(tǒng)根目錄還有兩個(gè)容易踩進(jìn)去的坑。第一個(gè)是工具鏈自帶的 sysroot 與板子的 libc 版本不匹配通常會出現(xiàn) cannot find -lstdc 或 GLIBC_2.34 not found 這類運(yùn)行時(shí)報(bào)錯(cuò)解決方法是盡量采用供應(yīng)商配套 SDK。第二個(gè)是不要用主機(jī)的 /usr/lib 來滿足交叉編譯的查找種下的錯(cuò)誤會在鏈接后期才爆發(fā)后面第四部分會專門展開。2. 依賴庫的順序排列與版本鎖定剛開始接觸 OpenCV 時(shí)我一直以為它是個(gè)自包含的庫直到有一天在板子上跑 imread 讀取常規(guī)圖片返回的 Mat 是空的才明白它如果想讀 jpg/png就必須在編譯期看到對應(yīng)的解碼后端。這個(gè)道理在交叉編譯場景里更嚴(yán)峻主機(jī)的這些后端庫不能直接復(fù)用必須在編譯 OpenCV 前為目標(biāo)板準(zhǔn)備一套 ARM 版本。2.1 先弄清楚完整依賴圖譜再動手OpenCV 的模塊化結(jié)構(gòu)決定了依賴“按需引入”的魅力。不開 DNN 就不用碰 protobuf不開 GUI 窗口就不用編譯高層的圖形工具庫不加視頻采集功能就不需要外接視頻后端。先做一個(gè)清單再決定每個(gè)模塊要不要。 我日常最常保底的一組是核心、圖像處理、圖像編碼、視頻采集和窗口顯示模塊。圍繞它們依賴可分為以下幾類基本壓縮庫任何帶壓縮性質(zhì)的圖片格式都繞不開的底層庫先編它后面的依賴都直接或間接需要它。圖片格式解碼庫PNG、JPEG、TIFF 三個(gè)常用格式的解碼庫編碼解碼都靠它們完成。攝像頭采集后端V4L2 相關(guān)接口庫Linux 下攝像頭幀采集的標(biāo)準(zhǔn)入口。并行庫選項(xiàng)TBB 這類庫屬于可選項(xiàng)不開啟也可以用 pthread 完成并行但板子核多且性能關(guān)鍵時(shí)往往會加它。我的建議是為了減少環(huán)境不確定第一版編譯只保留核心、圖像處理、圖像編碼、視頻采集這四個(gè)模塊將界面和 DNN 全部關(guān)閉。等版子在板上能跑通最小 Demo再往里加其他模塊。編譯期減少依賴驗(yàn)證周期短出問題時(shí)定位也大幅度快于一次性全量。2.2 交叉編譯依賴庫的通用操作流程依賴庫的構(gòu)建方式各不相同但大體遵循一個(gè)固定姿勢先 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í)慣用一個(gè)臨時(shí)環(huán)境變量把工具鏈地址帶出來既避免反復(fù)寫活活的路徑也能保證依賴庫之間使用同一條編譯鏈。 編譯順序基本按依賴箭頭反向來最底層的基礎(chǔ)壓縮庫最先編圖片格式解碼庫在上層OpenCV 最后。貪方便打亂順序常常導(dǎo)致鏈接階段 libxxx.so 引用了一堆 undefined reference。如果你發(fā)現(xiàn)一個(gè)庫鏈接時(shí)依賴另一個(gè)庫就回頭重新排一下順序沒有捷徑。2.3 版本選擇的三個(gè)原則依賴庫版本與 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)過某個(gè)版本你直接沿用是最安全的。第三編譯依賴庫時(shí)保留窗口的configure參數(shù)日志避免日后需要重建時(shí)無據(jù)可依。環(huán)境變量也可以幫上大忙。交叉編譯時(shí)把 PKG_CONFIG_LIBDIR 指向 /opt/arm-rootfs/usr/lib/pkgconfig并且讓它只定位到系統(tǒng)根目錄里的 .pc 文件這樣 OpenCV 在查依賴時(shí)就不會撞到主機(jī)上的同名文件。在我某次操作中這個(gè)變量一度是腳本里最關(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ù)與一個(gè)可復(fù)用的配置文件寫下來這套配置翻過整個(gè) ARM 團(tuán)隊(duì)后還會繼續(xù)用到。3.1 一份可用的交叉編譯配置文件在 OpenCV 源碼目錄之外放一個(gè)單獨(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ā)工具后面三個(gè) 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)的含義我列個(gè)表比事后猜含義方便參數(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)行階段直接非法指令。 我有一個(gè)穩(wěn)妥做法先在板內(nèi)看 /proc/cpuinfo 的 Features 是否包含 neon再決定要不要開啟。若包含在 CMake 參數(shù)里加上 NEON若不包含寧可什么也別動用通用編譯參數(shù)。對于 AArch64 架構(gòu)NEON 是默認(rèn)啟用且沒有選擇的余地再去手動加反而多余。 還要特別提醒一個(gè)坑不要在交叉編譯環(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)錯(cuò)。這一節(jié)記下我自己遇到的三類真問題不看報(bào)錯(cuò)本身先看環(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ì)的編譯錯(cuò)誤。 交叉編譯對主機(jī)內(nèi)存的要求往往被低估尤其 OpenCV 這類 C 模板大戶每個(gè)編譯單元都可能讓人內(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í)先檢查文件屬性而非看錯(cuò)信息提示錯(cuò)誤大多數(shù)是 undefined reference to xxx或者 cannot find -lxxx。這倆時(shí)候第一反應(yīng)是去補(bǔ)什么包那就容易誤判。真正原因經(jīng)常是它在系統(tǒng)根目錄里找到的庫文件其實(shí)是 x86 版本或者是兩個(gè)不同架構(gòu)的庫被 CMake 串在一起。 我的排查順序先定位報(bào)錯(cuò)里涉及的 .so 文件在哪個(gè)目錄然后執(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 版本。 第二個(gè)反復(fù)遇到的鏈接問題是某個(gè)依賴庫確實(shí)編好了但 OpenCV 仍然說找不到。這通常是 CMAKE_FIND_ROOT_PATH 沒設(shè)置或者設(shè)置了配置里少加了 ONLY 模式。系統(tǒng)根目錄里明明有對應(yīng)版本卻找不到優(yōu)先回看 3.1 節(jié)里的配置文件把查找模式的四個(gè)參數(shù)一個(gè)一個(gè)對齊。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ù)重編即可。另一個(gè)更省事的辦法在板子上執(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í)行程序。不要急著把整個(gè)目錄復(fù)制到板子上更好的思路是設(shè)定一個(gè)清晰的目標(biāo)目錄結(jié)構(gòu)把需要的東西統(tǒng)一收集起來再同步過去。這一節(jié)講講安裝階段和上板驗(yàn)證的細(xì)節(jié)。5.1 兩個(gè)安裝路徑的區(qū)別在 CMake 配置里有兩個(gè)容易弄混的概念CMAKE_INSTALL_PREFIX 決定安裝到哪個(gè)前綴目錄DESTDIR 是臨時(shí)把一個(gè)安裝過程重定向到指定根目錄的手段。 我的習(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í)可以刪掉整個(gè)目錄不需要重裝系統(tǒng)驗(yàn)證。5.2 編譯一個(gè)最小驗(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會列出程序依賴的每個(gè)動態(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)化都要先有一個(gè)基準(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 五個(gè)模塊后安裝目錄體積能下降到幾百 MB 的四分之一左右。若后續(xù)不需要視頻捕獲把 videoio 去掉還能再少一截。DNN 如果不涉及神經(jīng)網(wǎng)絡(luò)推理堅(jiān)決不納入。 動態(tài)鏈接庫太多也影響啟動時(shí)間。產(chǎn)品最終形態(tài)可以把 OpenCV 與主程序一起靜態(tài)鏈接生成單個(gè)可執(zhí)行文件方便拷貝部署但開發(fā)階段保持動態(tài)庫方式更舒服出錯(cuò)時(shí)不必反復(fù)重編。我在驗(yàn)證階段用動態(tài)庫出產(chǎn)品時(shí)再默認(rèn)調(diào)成靜態(tài)是相對平衡的方案。6.3 值得固化的移植流程走過的彎路都折騰完后建議把所有步驟沉淀成腳本否則三個(gè)月后再升級版本又要重新踩一遍。參考下列一個(gè)極簡腳本結(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í)會順很多。我上一輪完全照著這套腳本從一個(gè)平臺復(fù)刻到另一個(gè)相同架構(gòu)的板子除了工具鏈路徑略改幾乎沒有再花一個(gè)下午一起去調(diào)環(huán)境。如果你手頭還有幾塊不同板子正等著部署可以把這個(gè)流程當(dāng)作繼續(xù)往下走的模板。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
在线五区| 久久久五月天| 熟妇色99| 欧美久久人体| 国产三级资源在线观看| 丝袜AV一区二区三区| 黄呦呦在线| 天天弄天天操| 日韩亚洲Av人人夜夜澡人人爽| 欧美天天干| 日韩淫色网| 综合 青草 伊久久 影院 综合| 日本久久精品| 精品成人av一区二区三区在线| 26uuu成人影片| 3P丝袜熟女 色综合| 国产精品一二三| 亚洲免费97免费| 91人妻超碰| 91久久久久久久| 91色婷婷综合久久中文字幕二区| 亚洲中文字幕网| 粉嫩av在线一区二区| 95自拍视频在线观看| 日本成人免费一区二区三区| 欧美日本成人一区二区| 亚洲国产美女久久久久| 久久riav中文精品| 欧美经典一区二区三区| 国产成人综合在线播放| 久99视频| 欧美午夜精品久久久久久超碰| 熟女色综合久久| 青青伊人这里只有精品| 26uuu国产成人综合| 中文字幕亚洲热播人妻| 免费毛片在线播放| 五月天久久久| 神马久久中文字幕| 亚洲色91C| 在线观看 99热| 亚洲揄拍网| a片亚洲一本通视频| 无码人妻丰满熟妇奶水区毛片| 欧美淫穴| 欧中美三级一区二区三区| 四虎884| 暴力av在线| 我想要啊 啊 啊| 日韩射图| 中文字幕高清精品一区| 国产精点久久久成人| 俺去也婷婷| 欧美亚洲国内自拍| 免费网站观看www在线观| 999熟女精品| 丁香五月天堂| 中日无幕一二三四区| 欧亚乱色熟一区二区三四区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 中文字幕在线观看永久| 婷婷丁香五月激情啪啪| 日韩欧美丝袜诱惑| 91日韩| 午夜男女爽爽爽影院视频| 日本三级网页| 北条麻妃99精品青青久久| 美国久久一二三四| 欧美姓爱综合网| 色欲Av人妻精品一区二| 久久精品国产亚洲AV成人直播| 色五月激情网| 97在线公开视频| 欧美福利视频啊啊啊啊| 六十路日本| 欧美黄色图片| 黄页网站成人免费| 成人七区| 日韩综合色网| 久久首页| 亚洲自拍另类丝袜综合| 欧美丝袜亚洲| 特级特黄一级毛片免费| 五月丁香激情综合| 91青青在线视频| 91人妻人人澡人人爽人人精品| 久久无码一区二区二三区性色| 免费强奸av| 久久av色| 麻豆国产精品午夜视频| 桃花色涩综合影院| 色婷婷淫色网| 一区二区三区黄片免费观看| 91在线免费观看处女| 91久热| 久草网站免费在线观看| 歐美性天天| 久久伊人最新网址视频| 成人贴图日韩欧美| 国产精品96| 伊人久久婷婷| 1024精品在线| 五月激情小说| 91天美免费| 日韩国产欧美伦理在线 | 五月丁香激情四射| 婷婷亚洲综合| 超碰地址久久| 久久99综合| 玖玖资源视频一区二区三区| 超碰1024久久| 男人天堂黄片| 大香蕉色欲AV| 国产浮力影院第1页| 天天内射| 综合久久六月久久婷婷| 亚洲影视高清第一页| 久草视频观看视频在线| 岛国999| 午夜福利在线合集| 少妇99| 中文字幕aⅴ在线视频| 男人网站婷婷| AV污污污污| 久久久久久免费电影| 国产操逼逼网| 96久久久久久久| 国产少妇肉丝在线观看| 亚洲欧美日韩中文播放| 欧美日韩国产电影| 亚洲成人av电影在线| 亚洲Av噜噜一区二区三区妖精| 91搞逼视频| 欧美 亚洲 另类 综合| 天天色天天干天天爱| 欧美色图中文字幕| 久久久免费一级黄片| 一二三四视频在线社区中文字幕| av天堂5| 尤物视频网 刘玥| 久久亚洲AV无码专区国产精品| 丝袜视频一区二区在线播放国产中文| 人妻少妇被猛烈进入中| 欧美97网| 欧美性暴力猛交XXXX| 国产精品免费1区2区视频| 成人AV素股で擦久久| 丰满美女一级毛片在线播放| 狠狠爱夜夜干| 久久精品人体| 逼操网站| 综合亚洲欧美| 96国产污污污丝袜| 五月丁香色婷婷| 日韩欧美性爱电影在线观看| 无卡一区=区| 日本福利社| 高清国产无码av| 久久精品人妻一区二区三区| 中文字幕版| 国产激情在线| 欧美亚洲一级在线观看| 日日爱99| 天天干天天操天天操夜夜操天天操| 97超碰巨乳| a在线视频免费观看| 女人与公拘交酡2020视频| 在线观看啊啊啊啊啊| 激情文学亚洲| 曰韩少妇无码| 大香蕉欧美伊| 区日韩亚洲乱码av电影| 中文字幕日本久久| 8x福利精品第一福利视频导航| 91综合天天看| 久污| 色眯眯av| 75大香蕉| 欧美美女啪啪视频| 黄页大片在线观看| 99re视频在线观看这里只有精品| 久久精品美女一区| japan日本高清乱xxxx| 乱伦一二三| 不卡在线观看视频| 麻豆国产97在线| 国产馆| 日韩欧美蜜桃精品久久中文字幕久久| 国产乱码精品久久久久久| renqi久久久久久久久久久久| 亚洲成a人片在线观看中文!!!| 亚洲一级黄色毛片| 97在线视频网站| 男人成人黄色视频在线观看免费下载| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 色吧5亚洲| 97资源久久| 亚春色色| 国产又粗又长又大的视频| 国产情色第一第二页在线观看| 粘花网06av视频| 欧美嗯啊……在线观看视频免费| 男人的天堂2019AV| 久久国产精品一级二级三级| 五月天黄色av| 国产白领连续中出在线观看| 中文字幕人乱码中文字的预防方法| 淫色网综合| 九九热五区| 久插综合| 黄色十八禁| 校园春色家庭伦理欧美激情| 蜜臀中文无码午夜| 可乐操在线| 婷婷五月天激情四射| 久艹日日日| 加勒比综合| 伊人国产成人av网站| 男人的天堂2019| 精品99999| 国产无码成人无码| 小视频玖玖| 黑人嘿嘿嘿超爽免费视频| 久久肏大逼| 九九九九九九九精品视频| 又大又白奶子| 久久精品老司| 亚洲91射| 91免费看一区二区三区| 99色日| 舔舔啊| 蜜桃久久一区二区| 亚洲国产婷婷在线播放| 五月天激情小说网| 日韩av熟女一区二区三区成人| 亚洲色图a| 欧美色综合图片| 久草色在线观看| 天美91| 岛国毛片手机在线观看| 2001天天操| 999综合色| 亚洲一区二区av| 国产亚洲福利第一页丝袜| 久久这里是精品| a网站免费观看| 国产传媒1234区| 91中文字幕在线观看| 亚洲九九九| 免费观看国产不卡av| 日本99热| 亚洲欧洲色情高清| 中文久久久| 色网在线视频观看免费| 91女在线观看| 亚洲色人| 国内三级自拍小视频在线观看 | 在线αⅴ| 99精品网| 91在线一起| 无码 黑人一区二区三区| 亚洲精品三| 嗯嗯啊啊好大好爽| 小视频国产| 国产精品老熟女一区二区| 日韩精品作爱导航| 人人看人人插| a男人的天堂| 日本三级精品| 久久人妻办公室视频| 天操老女人| 国产无码精品久久久久久| 色999;丁香五月| 加勒比伊人影院| 6080YYY午夜理论片在线观看| 久久久一区二区三区四曲免费听| 久久9999 | 国产农村妇女精品一| 天天舔日美女视频| www.色婷婷色综合| 日韩福利电影网| 国产野战露脸在线播放| 大香蕉一人在线| 国产精品自在自拍视频| 91丨人妻丨国产丨丝袜| 九九久久国产精品| 日韩AC| 亚洲国产综合久久天堂| 男人的天堂日韩| 亚洲āv网址在线观看| 亚洲av无线观看| 亚洲成人妻日韩在线| 午夜毛片亚洲精品片国产久久久| 亚洲精品国产日韩无码AV永久免 | 亚洲无码久久久久久久| A 天堂在线观看视频| 亚欧美无遮挡| 人人操人人操草草| 中文字幕乱码人妻一区二区三区,99精品 | 2020中文字幕在线| 成人天天爽| 大稥蕉免费视频这里只有精品| 熟女乱伦二区| 成人亚欧免费视频| 亚洲va有码在线天堂| 91看黄片| 国产白丝精品在线观看| AV天堂因数| 日韩精品午夜操呦呦不卡影院| 99久久9| 一区二区三区色综合| 999综合色| 91亚洲丝袜| 九九九九九九免费视频| 欧美人妻熟女在线| 一区二区三区在线日韩影院观看| 97热视频在线观看| 夜夜爽夜夜摸夜夜操免费视频| 99精品人人爽| 精品人妻一区二区蜜桃视频| 久久久月天| 日逼97| 激情五月综合开心五月| 中国一级操逼视频| 亚洲偷拍自拍在线视频| 婷婷在线播放| 精品96久久| 性欧美第一页| a片自拍直播视频| 深夜国产一区二区三区在线看| 香蕉人人操tv| 久久九七| 91欧美www| 国产一级特黄大片处女| 超碰人人妻| 日韩操呦呦影院在线观看| 人妻蜜桃臀| 国产高清精品一区二区三区毛片| 日本精品不卡一二三区| 日韩三级在线观看mp4| 99精品无码| 91欧美综合在线| 国产精品久久久久久久免牛肉蒲团| 自拍视频大全亚洲专媒视频/一区二区三区| 另类图片天天影视| 九九九九九九九九九九精品视频| 久热大香蕉| 黑人性暴力毛片| 精品无码久久久久久久久果冻糖心| 小说区 图片区色 综合区| 天天舔天天日天天射| 偷看洗澡一二三区美女| 日韩97| 亚洲日本成人动漫| 校园春色中文字幕AV| 大茄子熟女AV导航| 韩日无码在线观看| 囯产精品强| 国产av波波国产精品| 国产a级精品| 午夜性生活av免费在线看| 日韩中文字幕视频在线观看| 综合九九| 欧美性爱伊人| 久久伊人东京热| 开心五月深爱五月| 亚洲欧美不卡线| 伊人影院在线理论播放 | 欧美老妇综合网| 国产不良强奸视频免费看| 二区熟妇韩日| 欧美aa一级片| 精品国产乱码久久久久久日本公司| 嗯啊抽插大香蕉网页| 热热色综合网| 午夜免费视频1000| 日韩精品在线放| 亚洲影视高清第一页| 久久曰曰| 999精品国产高清一区二区| 噜噜噜久久亚洲精品色情| 国模精品娜娜一二三区| 九九久久久| 久草草一二三四区久久| 国产日本久久免费精品| 亚洲精品久久久久毛片A片拉屎 | 操一对老熟妇爽上天视频| 99∨VTV| 又粗又长又爽在线观看| 香蕉99秘 一区精品蜜桃臀| 美日韩一卡二卡三卡免费人妻精品| 啊啊啊啊在线播放| 久草成人影片| 日韩激情啪啪| 亚洲玖玖爱| 日本3级一区二区免费| 久99视频| 超碰97最新人妻| 亚州综合色图| 久久AV无码AV| 欧美黑人精品一区二区| 啊啊啊啊啊啊在线| 精品乱子一区二区三区99| 亚洲综人网| 精人妻无码一区二区三区伊人直播 | 日韩一级成人毛片免费观看| 日本一卡二区在线| 青青欧美| 激情黄色五月天| 97色色色综合网站| 天天综合香 ld视频| 九九热精品| 日韩成人精品中文字幕| 无码国产精品午夜不卡(| 黄页视频网站野外| 操B在线观看| 午夜120视频在线观看| 天堂无码精品国产久| 国产乱伦亚洲色图高清无码| 天天干天天操天天操夜夜操天天操 | 亚洲射综合网| 91美女网站| www.99色| 亚洲国产尤物yw在线观看| 香蕉热人人精品| 欧美日本一区二区a人| 91|九色|国产熟女| 九九色色| 久久色一区二区| 五月天亚洲网| 91亚洲综合在线| 乱伦熟女专区| 美女黄频a美女大全免费皮| 91GD.COM| 一区 欧美 日韩 麻豆| 五月天亚洲网| 精精品人妻一区二区三区| 懂色aV一区二区天美传媒| 欧美五十路熟| 亚洲天堂 视频你懂的| 亚洲图片欧美91N| 另类av综合久久| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 国产综合久| 麻豆久久视频在线地址| 精品无码久久| 久久久999日本大片| 日本布卡一区二三区| 日本一二区免费 | 视频在线97| 精品综合久久久久久97| 国产有码一区| 亚州欧美另类| 中出91| 亚洲欧美中日韩| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 女人高潮抽搐喷水视频网站| 欧美色天堂网在线视频| 97神马久久| 五月天玖玖资源站| 久久久久亚洲一区女同性恋中文字幕| 伊人操| 思思热在线视频精品| 天天爽入口| 国产真实野战在线视频| 人人妻人人色| 欧美精品日韩久久久九| 九九热视频这里只有精品| 天天日天天操天天射河南省| 国产精品午夜高潮呻吟久久av| 人妻人妻天天碰| 国产女人高潮嗷嗷嗷叫小说| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 久久国产精品91| 大香蕉狠狠爱| 亚洲夜色在线| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 久久人妻精品| 亚洲九九九| 韩国女主播青草在线| 熟女这里只有精品6| 亚洲欧洲无码一区夜| 久久久久亚洲Aⅴ无码| 一本大道青青| 熟女丰满人妻一区| 天天插夜夜操| 亚洲激情久久久伊人综合| 亚洲午夜免费狠狠干| 亚洲春色欧美激情自拍| 偷窥自拍亚洲色图| 国语人妻精彩刺激| 欧洲大香蕉| 亚洲婷婷丁香在线| 亚洲无套久久嗯嗯| 亚洲系列欧美| 男人的天堂啪啪| 天天色天天干天天射| 96国产精品| 青青草国产盗摄一二三区| 久久九九国产精品| 99999亚洲另类| 久久综合九九| 啊啊啊啊啊啊啊啊啊啊在线观看| 操逼无毒无码免费视频| 日han少妇无码| 欧美一区二区三区成人性生活| 九九无码视频| 免费成人在线观看91| 中文字幕午夜精品久久久| 天天综合网久久ww| 激情一区二区三区在线观看| 中文字幕一区二区在线日韩精品| 精品视频一区二区| 亚洲精品欧洲色| 欧美综合色图片| 久久色AV线| 中文字幕AV片| 99色日| 97视频在线观看播放与子乱对白在线……| 日韩,欧美,中文在线| 日韩亚洲精品一区二区| 激情抓乳插进去啪啪啪日韩 | 揉揉揉夜夜| 九九色婷婷| 麻豆91熟妇人妻中文字幕茄子| 国产成人午夜视频网址| 精品久久久九九九孕妇| 视频在线观看免费一区二区三区| 欧美色视| 中文字幕伊人| 99999精品成人| 狠狠色丁香| 99re公开精品免费视频| 97日韩| 加勒比色综合| 97免费视频网| 久久久999网站| 国产又色又爽又舒服的三级视频 | 91蜜臀熟女| 人人操人人摸人 | 天天做天天爱天天高潮| 国产女生在线| 国产精品嫩草影院免费| 亚洲性爱乱操x| 亚洲丝袜诱惑| 97Ai亚洲| 蜜臀AV午夜精品久| 啊啊啊啊无码| 国产精品久久久久久高清无码免费看 | 97超级欧美| 91国产丝袜足交精品视频| 99色热| www久| 日本在线视频导航| 91狼人| 国产日韩欧美三级片| 色综合av男人天堂| 八人操人人摸人人看| 国产免a费看黄片在线| 91精品微拍福利| 国产精品原创巨作?v网站| 伊人网免费视频| 无码直播久久久| WWW啪啪的com| 午夜福利视频在线一区| 色官网在线| 五月丁香综合啪啪| 91蜜臀熟女| 性感女人网页在线观看视频| 嗯嗯啊啊操死我| 男女91| 欧美青青视频| 99这里都是精品| 亚洲图片视频小说| 69一区二区三区 | 怡红院视频在线| 日本伦理一区二区| 天堂射| 五月天九九日国产精品一区二区三区| 欧美 日韩第一性色| 91白虎| 国产v亚洲v日韩v欧美v片另类| 欧美不卡五十路| 免费一级a毛片久久久久久鸭绿欲| 另类TS人妖一区二区三区| 日韩亚洲精品一区二区| 一级免费啪啪片| 97亚洲综合电影| 久久超碰98| 欧美色老汉| 天天干天天操天天操夜夜操天天操| 日韩 国产 欧美自拍| 乱伦av麻豆| 婷婷丁香六月天| 亚洲大色堂| 伊人嫩草| 岛国黄片网站| 99精品久久久久久久婷婷蜜桃| 口爆综合网| 久久同城AV| 国产精品乱码久久| 日韩欧美午夜视频在线| 久久精品免费| 九九超碰综合网| 国产JDAV无码视频在线观看| 日韩不卡av一二三| 一区二区三区日韩欧美| 亚洲成人AB| 国产精品无码久久久久2025| 99无码视频| 国产精品视频| 屁股久久久久久久久久| 特级毛片特黄久久免费看 | 精品人妻一区二区三区视频在线| 亚洲成人性爱网站在线播放| 91操人| 97超碰超欧美。| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 亚川综合视频| 欧美综合97www| 99rre在线精品99re8| 国产51色综合久久免费| AND人妻系列| 久久久久白虎| 91精品丝袜在线观看| 97一区二压| 狠狠久久手机视频精品| 大香蕉操久久| 熟妇色99| 亚洲黑丝在线| 精品人妻丰满熟妇一区二区三| 色情乱伦AV| 天天内射| 免费看黄视频亚洲网站| 97看操| 欧美日韩午夜精品一区二区三区| 久久久久久久久久久久久久久性生活视频 | 久9爱经典视频| 中文字幕乱在线伦视频中文字幕乱码在线 | 91男人天堂网| 中日韩久久久| 亚洲十八禁止| 日本一区二区不卡精品| 东方亚洲在线操逼天堂| 熟女字幕| 色噜噜人妻av中文字幕| www.色操逼| 亚洲色婷婷综合久久久久中文| 一级性爱aaaa| 综合色区偷拍| 欧美综合自拍成人自拍第二十页| 久久久久久久91| 97精品国产97久久久久久| 91殴美| 日韩伦理视频| se吧提供国产乱老熟视频胖女人| 天天综合网91入口| av强奸乱轮| 丰满人妻一区| 久99热| 精品亚洲天堂| 99re9这里只有精品| 国产精品露脸在线观看| 国产久久男人天堂| 免费久久精品麻豆一区二区av| 99精品综合久久久久五月天| 丁香五月婷婷五月| 亚洲日韩人妻中文字幕一区| 色香在线| 99精品久久久久久久婷婷蜜桃| 啊啊啊啊免费视频| 国产白领连续中出在线观看| 性影在线视频| 一二三区精品视频| 97超碰逼| 成人午夜视频免费播放| 天天看天天日天天操| 亚州久久9| 色婷婷久久综合超碰| 在线观看AV片| 野狼福利社区| 欧美熟女丝袜| 天美传媒一二三区永久网站| 国产日韩色综合| 99热在线只有精品| 亚州再线| 六月丁丁香| 国产欧美日韩一区二区三区| 美女性91| 亚洲资源网| 亚洲色偷偷色噜噜狠狠99网| 中文字幕五月婷婷免费| 1024精品在线| 天天色踪合| 日韩国产品视频中文字| 91在线精品| 免费看片黄| 日本幼女18+| 亚洲一二三| 啊啊啊操一区| 丁香五月综合| 黄色片一区二区三区四区五区| 国产又粗又长又大的视频| 目产99999久久999| 日韩成人色图| 91啪啪| 俺去俺来也在线www| 影音先锋每日最新资源在线观看| 夜夜高潮夜夜爽夜夜爱爱一区| 久久久久久久久久久999| 日本天天操| 欧美日韩性爱操大逼| 亚洲一区中文精品| 亚洲天天操| 中文字幕熟女人妻丝袜丝| 搞中出视频在线观看| 天天综合91在线| 亚洲超碰在线| 亚欧国产无码精品在线| 最新中文字幕精品在线| 久综合国内精品自在自线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 日韩久久艹| 涩爱AV在线| AV色天香在线| 日韩精品.久久精品.AV女优.天美传媒| 国产美女高潮叫床视频| 欧美人妻久久精品二区三区| 国产一区二区三区白丝| 久久精品午夜国产亚洲AV无码| 九九九九九精品| 91bbbbbb| 深夜国产福利| 91制服丝袜中文字幕| 97欧美日韩综合| 久久久久熟女| 亚洲精品99999| 亚洲91色| 日韩精品资源专区二区| 在线观看不卡一区二区三区| 国产美女在线精品免费看| 91精品人| 国产精品午夜福利亚洲综合网| 99人妻碰碰碰久久久久禁片| 国产精品一区二区a| 五月丁香黄色网| 久久这里只精品免费福利| 国内精品a| 九九综合久久中文字幕| 亚洲一卡2卡3卡4卡乱码网站 | 国产AV天美| 黄色不卡视频| 人妻少妇久久中文| 国产搭汕a级片| 亚洲动态色图| 色黄污美女啪啪啪免费网站| 影音先锋视频在线| 十八禁视频网站| 亚洲性爱高潮影院| 中文字幕少妇色 | 69视频入口| 超碰国产精品无码| 久久久久国产精品片区无码直播| 综合色图区| 国产精品久久久视频| 青女在线| 美女好片色日本| 99亚洲国产精品色一区二区三区| 狠狠操夜夜| AA丁香综合激情| 日韩超碰精品综合| 超碰 欧美| 天美精品原创av片国产| 最好看的中文字幕在线2018| 五月色综合| 午夜欧美神马久久久久| 超碰偷拍| 99精品国产户外露出| 美中日韩无码| 日韩国产品视频中文字| 少妇色综合| 欧洲精品一级二级精品综合视频综合| 少妇高潮流水av免费| 欧美成人黄网色网站| 大香蕉伊利av| 日韩电影免费网站麻豆视频| 97操| 91成人社区| 成人小电影网站tex| 伊人精品久久网站| 亚洲另类综合欧美| 91美女视频电影| 日本性爱视频一级| 任你艹| 亚洲91综合| 久久性爱视频免费看| 亚洲夜夜欢无码一区二区| 中文字幕加勒比海高清无码免费视频| 人妻色情天天操| 17c在线成人免费A片观看| 五月天丁香| 啊啊啊在线看| 嫩呦国产一区二区三区AV| 欧美拳交在线播放| 四季av一区二区凹凸精品小说| 日韩精品在线放| 猛交交| 精品无人区麻豆乱码1区2区图片| 啪啪视频亚洲第一| 草b在线| www亚洲欧美| 日韩av一级黄片| 天天综合网1| 麻豆国产97在线| 99色悠悠| 日韩熟女精一区二区三区不卡| 日本一级二级三级网站| 性爱AV天堂| 另类亚洲一区二区三区| 一区黄二区黄| 国产精品ww久久| 午夜精品久久久久久久男人的天堂| 一本大道久| 青青操狠狠撩| 久久久91福利姬| 欧美日韩国产高清在线一二三区| 高潮嗯啊性感美女久久久| 黑人免费福利视频| 熟妇人妻一区二区三区| 国产精品美女视频诱惑| 亚洲有薄码区日本系列中文字幕| 99热伊人| www.91色综合| 97香蕉网| 欧美成人亚洲精品| 亚洲,日韩,欧美,成人播放| 97人亚洲综合字幕| www.久久制服糖| 日韩av色图| 日本性爱少妇| 久久伊人东京热| 激情综合网激情五月天| 麻豆视频一区二区| 怡红院视频在线| 免费A片三p视频| 四虎免费看黄| 国产亲戚伦亲在线| 婷婷10月天青娱乐| 日韩偷拍色图| 国产精品福利资源在线尤物| 91最新综合| 熟女乱伦A| 黄站在线免费观看| www.婷婷| 天天影视色香欲综合网小说| 天天综合香 ld视频| 乱伦图av| 97久操| 91neishe| 一级性爱啪啪视频| 黑人综合色| 五月综合色| 日本高清视频xxxx| 中文日韩欧美熟| 67914亚洲精品| 中文字幕日韩专区精品系列| 蜜臀无码一区二区| 久久一二三四五六七八九区区区| 亚洲巨爆乳一区二区三区四季网| 国产人妻一区二区三区欧美毛片| 国产小u女在线观看| 久久精品店| 天天综合网1| 91人妻PORNY九色大屁股| 欧美激情综合| 91丝袜美腿片| 欧美拳交在线播放| 嫩草一区二区在线观看| 九热中文字幕| 亚洲色图自拍| 暖暖精品二区三区观看| 一级久久久久久久久久久| 91五十路| 四虎精品一区| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 亚洲精品a人片在线观看视| 综合久久2017| 久久视频,这里只有精品| 欧美后入式| 大香蕉综合| 99视频只有精品| 污污汅18禁网站在线永久免费观看 | 超碰人人操97碰| 国产白丝AV| WWW美腿丝袜香蕉中文| 欧美综合加勒比在线| 久久精品99| 国产熟女免费观看久久| 囯产精品久久久久久久久久梁医生| 伊人久久亚洲色欲综合网站 | 久久天天艹| 91性感在线| 亚洲一区制服诱惑| 操美女人妻| 久久伊人大香蕉| 国产精品69人妻无码久久久| 中日韩免费看男女操逼大全| 伊人宅男大香蕉| 日本中文字幕一区| 91艹逼精品| 高清不卡视频| 日产狠狠干| 久久婷婷亚洲| 亚洲综合中文字幕有码| 人人操人人摸人人看人人干| 日本东京热久久久电影| 91综合站| 97天天操| 好涩综合| 国内一级精品| 嗯嗯不要 视频| 日日骚av| 久久久三区二区一区| 午夜综合在线| 欧亚揄拍偷拍精品视频 | 黄色片A级一区二区三区| 美女黄网| 97碰| 乱伦熟女论坛| 亚洲欧美日韩中文播放| 国产97视频| 色综91| 亚洲综合电影| 丁香婷婷五月| 免费视频在线一区二区不卡| 国产在线播放成人免费| 国产精品熟女一区二区三区| 色综合天天爱去电影网| 久久粉色| 97在线视频观看| 欧美欧美啪啪视频| www.亚洲黄色| 成人乱人伦一区二区| 18禁免费视频| 综合操逼| 色爱国产| 国模一区二区三区| 欧美日韩人人精品| 91亚洲欧美色图| 亚洲一区二区 麻豆传媒| 伊蕉97蜜桃97狠狠综合干| 97一区二区三区视频| 亚洲人码13| 91熟女视频网| 最近二区三区视频大全| 亚州熟女乱伦| 岛国色情视频在线观看| 精品在线观看视频在线| 大香蕉久| 久久久久中出| 97操在线| 天天夜夜rb| 成人免费性爱视视| 搡老女人老妇女AAA一VU麻豆| α√在线| 天天综合色电影| 人妻在线大香蕉| 欧美色图自拍| 男女无套 免费网站| AV一区观看| 静品嫩模一区二区| 成人AV素股で擦久久| 91爱看| 亚洲欧美洲综合| 久久免费99精品久久久久久| 日韩AV无码中文一区二区| 99热免费| #NAME?| 久久中文字幕在线观看| 影音先锋少妇| AA丁香综合激情| 97视频在线观看高清资源| 一区二区播放| 国产精品分类在线观看| 九九无码视频| 色爱综合网欧美| 激情婷婷黑人91| 最近2018中文字幕在线高清第一页 | 超碰97网址| 疯操AV| 极品综合| 大香樵伊人网| 97超碰免费生活| 91亚洲在线| 日本一本道A级黄色毛片试看60分钟| 久久久蜜桃一区二区三区| 亚洲污污网站| 国产又粗又大硬免费色网视频| 黄色av片三级三级三级免费看| 2025亚洲男人天堂| 国产精品日日摸天天碰| 四虎国产精品永久地址入口| 91大胆欧美| 久久熟女嫩草成人片免费| 亚洲AV秘无码一区..| 日本91白丝| 91天天综合在线观看| 日韩在线性爱免费视频| 久久久久久久久久久97| 91N综合网| 青娱乐久久艹| 97精品综合久久网| 国产精品不卡高清在线观看| 色播丁香| 欧美啪啪啪91| 亚洲最大AV网| 欧美在线 亚洲| 久久国产免费激情视频| 久久综合久久综合人久久夜精品| 久久久日本电影| 色9999日韩国产| 亚洲交换| 国产福利影视| 国产久久久久影院老熟女| se吧提供国产乱老熟视频胖女人| 啊啊啊啊啊啊啊国| …亚洲黄色厕厕女女在线播…| 91久久久久久久久18| 蜜桃午夜视频一区二区| 日韩在线观看字幕精品| 成人精品视频| 欧美aaaaaaa| 九九热视频这里只有精品| 亚洲中文字幕熟女| 丰满少妇一区二区三区专区| 99精品久久| 日韩大香蕉AV影片| www.99热| 不卡在线观看视频| 校园春色综合| 国产强奸乱伦第1页| 色穴精品| 超碰在线人妻中文字幕| 超碰97色色| 加勒比在线观看一区二区| 美性中文综合网| 婷婷丁香五月天亚洲天堂网| 91精品久久久久久久久久| 亚洲av淫乱| 亚洲天堂另类| 口爆综合网| 26uuu最新| 绑缚麻绳人妻寝取完整版| 久久精品欧美一区二区三区不卡| 亚州春色| 欧美日韩国产色图在线| 中文有码9| 韩国女主播青草福利视频| 日本国产欧美一区三区二区| 五月天久久婷婷亚洲| 日韩丰满熟妇| 精品国产乱码久久久久久久久久毛片| 九九性视频| 九九综合九九综合| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV | 久久精视频美日韩在线视频| 午夜传煤十二区精品| 嗯啊啊啊轻点视频 | 高清不卡视频| 国产亚洲精品农村妇女| 日韩无码服务区| 色999人与兽| 一本大道不卡一二三区| 久超碰这里只有精品| 91色碰| 久久精品国产亚洲AV片多多 | 日韩无码黄色片| 亚洲综合在线91| 欧色综合| 欧美性爱另类综合| a片久久久久久久久久久久 | 热热色色综合| 亚洲午夜免费狠狠干| 影音先锋乱伦资源| 在线洲亚线| 青青草伊人久久| 国产超碰人人操| 人人人摸人人| 一区二区三区一亚洲中文字幕、综合区灬| 亚洲精品蜜桃久久久一区二区三区| 乱伦图一区| 97色碰| 日本国产二线女色| 色爱综合网欧美| 桃色五月天| 岛国在线一区二区三区| 探花精品 一区二区| 一区二区不卡免费| 欧美亚洲丝袜美女电影| 国产成人综合网| 亚洲国产婷婷在线播放| 亚洲天天综合| 国产2.3.4区| 精品久久久不卡一区二区| 亚洲有薄码区日本系列中文字幕| 久久九九国产精品| 国产精品人妻一区二区| 三级色影综合网| 久久禁| 强奸熟女一区二区三区 | 超碰97亚洲| 久久久999国产| 91女优在线观看| 夜夜国产一区| 久久久久久久九九九九九九| 99爱爱| 黄aaaaaaaaaaaaaaaaaa色网站| 青草草免费网站av| 国产精品人妻无码久久久互動交流| 欧美综合区| 超碰97男人| 91无码中出人妻视频| 手机看片1024你懂的国产| 少妇一级婬片免费放一级a性色.| 试看60秒 爽| 亚洲人妻日日日| 日本久久久久久久久久| 国产精品一级二级在线| 青青草色插素人| 草伊人高潮喷水超碰| 色av中文字| 九色97| 欧美九9 9 9| www.色五月| 丁香六月婷婷综合| 色综合久| 久久久成人国产精品无码| 福利在线观看一区二区| 一牛影视成人片免费| 蜜乳av一区二区| 大香蕉黄色一级片免费看| 永久免费av无码网站国产app| 呦呦一区| 国产精品久久久久无码Av网曝门| av黄图片在线观看| 亚洲色婷婷久久91| 中文字幕精品探花视频| 成人精品在线免费视频| 美女裸体无遮挡永久免费观看网站| 免费操逼91| 久草精品国产99| 日韩黄色av中文字幕| 能在线播放的国产三级| 波多野结衣先锋影音| 欧美人妻久久精品二区三区| 久久精品国产72国产精品福利| 韩国一级做A片免费的| 婷婷五月激情综合| 亚洲午夜免费狠狠干| 欧美日日夜夜|