操:從配置到跑通全流程)
macOS OpenCV 源碼編譯實(shí)操從配置到跑通全流程【免費(fèi)下載鏈接】opencvOpen Source Computer Vision Library項(xiàng)目地址: https://gitcode.com/GitHub_Trending/opencv31/opencvmacOS 上用 pip 裝好的 OpenCV 包控不了模塊和編譯參數(shù)想裁剪模塊、開 OpenCL 加速、調(diào)試算法源碼就得自己編譯 OpenCV。新手最常卡住的其實(shí)是三個(gè)問題cmake 參數(shù)怎么配、編譯為什么慢、裝完之后怎么算驗(yàn)證成功。本文圍繞這三點(diǎn)給出一條最短路徑。選一條安裝路線路線優(yōu)點(diǎn)代價(jià)適用場景pip install opencv-python30 秒裝完無需編譯不能裁剪模塊改不到源碼快速試用 APIbrew install opencv二進(jìn)制包成熟穩(wěn)定選項(xiàng)少版本更新慢日常開發(fā)夠用源碼編譯模塊與編譯參數(shù)全可控編譯耗時(shí)幾十分鐘定制加速、調(diào)試源碼判斷標(biāo)準(zhǔn)只有一條你是否需要碰源碼和編譯參數(shù)。只驗(yàn)證 API 行為用 pip 最省事需要 OpenCL 加速、裁剪模塊或者改算法代碼時(shí)才值得花幾十分鐘走源碼編譯。后面兩條路線的最終產(chǎn)物都能用 pkg-config 發(fā)現(xiàn)項(xiàng)目接入方式一致。最小可用環(huán)境按依賴順序把最小可用版本編譯出來xcode-select --install # 編譯器與 macOS 構(gòu)建系統(tǒng) brew install cmake python3.12 # cmake 是構(gòu)建入口Python 供綁定檢測 pip3 install numpy # OpenCV Python 綁定依賴 numpy git clone https://gitcode.com/GitHub_Trending/opencv31/opencv cd opencv mkdir build cd build cmake -DCMAKE_BUILD_TYPERelease \ -DOPENCV_GENERATE_PKGCONFIGON .. make -j$(sysctl -n hw.logicalcpu) # 全核心并行編譯 sudo make installOpenCV 的 cmake 明確禁止在源碼目錄內(nèi)構(gòu)建看到 In-source builds are not allowed 報(bào)錯(cuò)時(shí)說明你忘了建獨(dú)立的 build 目錄。只用少數(shù)模塊時(shí)加 -DBUILD_TESTSOFF -DBUILD_PERF_TESTSOFF 可把編譯時(shí)間直接砍半對(duì)最終庫的功能沒有影響。配置階段末尾cmake 會(huì)打印一份完整的依賴清單檢測到的 Python 版本、并行框架狀態(tài)、第三方庫來源。這里的 Parallel frameworks 一行決定運(yùn)行時(shí)用 OpenMP 還是 TBB裝完前掃一眼這段輸出能提前發(fā)現(xiàn)環(huán)境缺件比裝完再查快得多。另外 Release 模式帶 -O2 優(yōu)化后面跑性能對(duì)比時(shí)不要用 Debug 版兩者差距能有數(shù)倍。首次運(yùn)行驗(yàn)證最直接的驗(yàn)證是完成一次鏈接加運(yùn)行。寫一個(gè) check.cpp把版本號(hào)打到終端再落盤一張圖#include opencv2/core.hpp #include opencv2/imgproc.hpp #include iostream int main() { std::cout CV_VERSION std::endl; cv::Mat img(240, 320, CV_8UC3, cv::Scalar(20, 60, 180)); cv::putText(img, OK, {30, 130}, cv::FONT_HERSHEY_SIMPLEX, 1.5, {255, 255, 255}, 2); cv::imwrite(check.jpg, img); return 0; }g -stdc11 check.cpp -o check $(pkg-config --cflags --libs opencv4) ./check終端打印版本號(hào)例如 4.12.x并且當(dāng)前目錄生成了 check.jpg安裝就算成功。沒通過時(shí)按順序排查三條pkg-config 找不到 opencv4設(shè) PKG_CONFIG_PATH 指向安裝目錄運(yùn)行時(shí)提示缺 .dylib把安裝 lib 目錄加進(jìn) LD_LIBRARY_PATHPython 里 import cv2 失敗確認(rèn)用的是源碼構(gòu)建而非殘留 pip 包如果配置時(shí)檢測到 numpy 和開發(fā)版 Python源碼構(gòu)建會(huì)順帶編譯出 Python 綁定安裝后 import 到的是自己編譯的版本可用下面一行快速確認(rèn)python3 -c import cv2; print(cv2.__version__, cv2.__file__)三項(xiàng)都通過后面跑示例和寫項(xiàng)目就不用再回頭查環(huán)境了。核心能力速覽OpenCV 的代碼按模塊組織每個(gè)模塊獨(dú)立編譯成庫。core 提供 Mat 容器和基礎(chǔ)運(yùn)算imgproc 負(fù)責(zé)幾何變換、濾波與形態(tài)學(xué)imgcodecs 管 imread/imwrite 讀寫highgui 管顯示窗口videoio 接攝像頭和讀寫視頻dnn 加載訓(xùn)練好的推理模型。裝完之后最可能馬上用到的能力有六項(xiàng)能力關(guān)鍵 API一句話場景色彩與縮放cvtColor, resize圖像預(yù)處理伽馬校正convertScaleAbs糾正曝光不足邊緣檢測Canny提取目標(biāo)輪廓特征匹配ORB findHomography拼接與定位相機(jī)標(biāo)定calibrateCamera求內(nèi)參與畸變系數(shù)模型推理dnn::readNet加載檢測模型OpenCV 特征匹配與單應(yīng)性變換同一物體兩張圖像的特征點(diǎn)對(duì)應(yīng)關(guān)系OpenCV 伽馬校正低對(duì)比度圖像校正前后的對(duì)照做相機(jī)標(biāo)定時(shí)需要一個(gè)標(biāo)準(zhǔn)目標(biāo)OpenCV 自帶現(xiàn)成的板型模板直接用就行OpenCV 交互式標(biāo)定Charuco 標(biāo)定板與屏幕上的角點(diǎn)檢測按需深入配置開啟硬件加速什么時(shí)候看處理大圖或視頻流時(shí) CPU 占用長期頂格想卸給 GPU。cmake -DWITH_OPENCLON -DWITH_OPENCL_SVMON ..WITH_OPENCL_SVM 會(huì)讓 OpenCV 把 FFT、矩陣運(yùn)算這類重載任務(wù)卸載到 GPU。重新配置后在 cmake 輸出的 Parallel frameworks 一節(jié)確認(rèn) OpenCL 已被檢測。沒有獨(dú)顯的機(jī)器不必折騰CPU 的向量指令集默認(rèn)已經(jīng)開啟。裁剪模塊縮短編譯什么時(shí)候看只用少數(shù)模塊想把編譯時(shí)間再壓一截。cmake -DBUILD_opencv_dnnOFF -DBUILD_opencv_videoioOFF \ -DBUILD_TESTSOFF -DBUILD_PERF_TESTSOFF ..每個(gè) -DBUILD_opencv_xxxOFF 都會(huì)跳過對(duì)應(yīng)模塊的編譯、測試與示例耗時(shí)按模塊數(shù)等比下降。注意 core、imgproc、imgcodecs、highgui 是基礎(chǔ)依賴必須保留其余按實(shí)際用途關(guān)閉即可。接入 contrib 擴(kuò)展模塊什么時(shí)候看需要 face、text、xfeatures2d 這類主倉庫沒有的擴(kuò)展功能。cmake -DOPENCV_EXTRA_MODULES_PATH../opencv_contrib/modules ..把 contrib 源碼克隆到與 opencv 同級(jí)目錄參數(shù)指向它的 modules 子目錄即可擴(kuò)展模塊會(huì)和主庫一起編譯安裝。注意 contrib 的版本要與 opencv 主倉版本對(duì)應(yīng)混用版本是編譯失敗最常見的原因。學(xué)習(xí)入口samples/python/按模塊組織的 API 示例適合入門跑通apps/interactive-calibration/交互式標(biāo)定工具源碼適合學(xué)相機(jī)標(biāo)定modules/imgproc/圖像處理算法源碼適合調(diào)試和改算法doc/tutorials/ 目錄成體系的模塊教程適合系統(tǒng)學(xué)習(xí)cmake/ 目錄構(gòu)建參數(shù)定義位置適合改編譯選項(xiàng)時(shí)查閱下一步本文覆蓋到源碼編譯、運(yùn)行驗(yàn)證與按需配置。建議接著在 samples/python/ 里挑一個(gè)示例跑通再把測試圖換成自己的數(shù)據(jù)?!久赓M(fèi)下載鏈接】opencvOpen Source Computer Vision Library項(xiàng)目地址: https://gitcode.com/GitHub_Trending/opencv31/opencv創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考