一、概述
背景:19年mac機上安裝過opencv,昨天清理電腦磁盤(把不要的刪除掉),結果把opencv誤刪除掉了。所以決定重新編譯一份。
過程中遇到了不少問題,這里做個記錄,以便下次遇到的時候查閱,當然也方便其他開發同學。
二、操作步驟
1.去opencv官網下載下載:opencv源代碼和opencv_contrib
2.下載cmake,直接下載.dmp文件安裝即可
3.打開cmake的gui界面,並選擇對應的路徑,如下
4.選擇配置opencv_contrib擴展模塊,如下圖
5.執行make -j4
6.執行sudo make install進行安裝
三、遇到的問題
1.下載ippicv困難和face_landmark_model.dat苦難
解決辦法:
a.手動下載ippicv_2020_mac_intel64_20191018_general.tgz到Downloads(可以是任意目錄,此處演示用Downloads目錄)
b.找到opencv4.4.5源碼下的3rdparty目錄下的ippicv目錄下的ippicv.cmake並打開
c.修改ippicv.cmake中的下載路徑為你下載文件的路徑
2.編譯時遇到的異常,如下:
[ 58%] Linking CXX shared library ../../lib/libopencv_imgcodecs.dylib Undefined symbols for architecture x86_64: "_jpeg_default_qtables", referenced from: cv::JpegEncoder::write(cv::Mat const&, std::__1::vector<int, std::__1::allocator<int> > const&) in grfmt_jpeg.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [lib/libopencv_imgcodecs.4.1.1.dylib] Error 1 make[1]: *** [modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs....
解決辦法:
在源碼中找到/Users/xxx/opencv-4.2.0/3rdparty/libjpeg-turbo 目錄並打開,打開CMakeLists.txt打開找到如下圖所示:
參考:https://github.com/opencv/opencv/issues/18541
三、總結
這一次配置環境搞的時間有點久,從昨天早上到今天上午才搞定。主要的坑在於config時下載文件的速度過慢,還有版本問題。特別是版本問題如果是最新的系統,最好選用opencv最新版本。我反反復復的嘗試好好多個版本,從4.0.0、4.1.1、4.1.2、4.5.2、4.5.5,其中有各種各樣的問題,最后編譯好的是4.5.5(我把系統升級到了最新版)