日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

generate报错 make_如何安装opencv_contrib及解决其安装编译问题

發布時間:2025/3/20 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 generate报错 make_如何安装opencv_contrib及解决其安装编译问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、背景

最近在實現一個基于opencv3的自動人臉識別項目,主要是使用了cv2.face模塊自帶的三種人臉識別算法,分別是cv2.face.EigenFaceRecognizer_create()、cv2.face.FisherFaceRecognizer_create()以及cv2.face.LBPHFaceRecognizer_create(),這三個算法一個比一個效果好,但是在運行代碼時,出現了如下問題:

AttributeError: module ‘cv2.cv2’ has no attribute ‘face’

網上搜索后,得知是因為cv2.face模塊因穩定性和測試不足問題沒有在opencv3庫上自帶,需要自己下載opencv3和opencv_contrib源代碼使用CMake和visual studio編譯!

2、下載CMake和opencv/opencv_contrib

根據提示,基于自身的環境一步一步的下載相關代碼:

環境:win10 x64 + python3.6.2

(因網絡原因后來我到百度上下載了CMake 3.8.0,已放在百度網盤:

安裝CMake并解壓opencv和opencv_contrib source code到同一個文件夾上!

3、使用CMake生成opencv_contrib的python接口

我覺得步驟還是蠻簡單的:

3.1、選取opencv source目錄和build output目錄

如下圖:

1是opencv的source code路徑,2是CMake output(包括configure和generate)的目錄

3.2、第一次點擊左下角的Configure

這一步主要是根據opencv source code路徑下的CMakeLists.txt生成一些配置選項

如果看到CMake底部log輸出窗口輸出“Configuring done”則說明第一步成功了。

3.3、配置OPENCV_EXTRA_MODULES_PATH

這一步就是要配置opencv_contrib的路徑,以便生成opencv_contrib相關模塊的庫函數接口

找到OPENCV_EXTRA_MODULES_PATH,然后選擇opencv_contrib/modules所在路徑

C:\Users\Administrator\Desktop\build\opencv\opencv_contrib-master\modules

3.4、檢查是否包含有BUILD_opencv_python3

這一步就是要檢查是否包含BUILD_opencv_python3或BUILD_opencv_python2,這與個人系統環境是否包含python3或python2有關,為后來生成opencv_contrib的python接口做準備

對應目錄應該是C:\Users\Administrator\Desktop\build\opencv\opencv-3.3.0\modules\python

3.5、第二次點擊左下角的Configure

這一步根據之前配置的opencv_contrib path重新生成配置項

3.6、直接點擊左下角Generate生成visual studio項目文件

之前Configure時無錯誤則可直接等待幾分鐘生成visual studio文件

如果看到“Configure done”和“Generate done”字眼說明成功了。

4、解決CMake報錯CXX/C compiler unknown的問題

題主使用CMake時遇到如下問題:

The CXX compiler identification is unknown

The C compiler identification is unknown

從錯誤log來看就是C/C++編譯器找不到了,可是在第一次Configure時都會跳出如下選框選擇默認編譯器的。

注意:我發現一個規律,如果重新配置CMake的“where to build the binaries” 路徑,可以重新選擇編譯器版本,網上有些說需要重新安裝CMake來選擇編譯器其實是不需要的!

后來,我嘗試選了不同的編譯器,但是發現都無效,后來想想是不是自己沒有安裝visual studio啊(前段時間重裝了win10系統沒有安裝任何版本的visual studio),打開控制面板查看已安裝的程序,果然沒有安裝任何版本的visual studio!!!

折騰一番,安裝好visual studio后,選擇對應的visual studio版本,這次終于可以了!

5、使用visual studio生成帶有opencv_contrib接口的opencv庫

5.1 visual studio打開OpenCV.sln

CMake Genarate成功后,會在CMake output目錄下生成一堆東西,在根目錄下,找到OpenCV.sln,然后使用相應的visual studio打開加載該解決方案。

5.2、設定“配置管理器”

這一步主要是設定“解決方案”為“release”而不是“debug”

再visual studio界面:生成–>配置管理器–>“活動解決方案配置”由“debug”改為“release”

5.3、逐個編譯CMakeTargets

分別對INSTALL、ALL_BUILD以及BUILD_opencv_python3右鍵單擊”生成“,等待直到編譯完成無報錯信息,如果有報錯信息且是一些不太常用的模塊,則可到CMake界面配置項里將相應模塊去掉,即將相應的勾去掉不包含進來,如下是將ximgproc去掉,然后再重新來一遍,直到沒有任何報錯信息!

5.4、拿到cv2.cp36-win_amd64.pyd放到python安裝目錄下

visual studio編譯生成opencv python接口后,會在CMake output路徑下的lib\python3\Release生成帶有opencv_contrib接口的opencv庫文件,如cv2.cp36-win_amd64.pyd,將其放到相應的python安裝目錄lib/site-packet/cv2下即可使用!

比如ximgproc模塊報錯,那就到CMake里將BUILD_opencv_ximgproc配置項去掉!

如果在對“INSTALL”生成編譯過程中報如下錯誤:

50>C:\Users\Administrator\Desktop\build\opencv\opencv_contrib-master\modules\xfeatures2d\src\sift.cpp(1156): error C2039: “removeDuplicatedSorted”: 不是“cv::KeyPointsFilter”的成員

50>C:\Users\Administrator\Desktop\build\opencv\opencv-3.3.0\modules\features2d\include\opencv2/features2d.hpp(99): note: 參見“cv::KeyPointsFilter”的聲明

50>C:\Users\Administrator\Desktop\build\opencv\opencv_contrib-master\modules\xfeatures2d\src\sift.cpp(1156): error C3861: “removeDuplicatedSorted”: 找不到標識符

則到類KeyPointsFilter查看確實沒有“removeDuplicatedSorted”這個接口,但是卻有“removeDuplicated”,所以將其修改成正確的接口,如下:

調用cv2函數庫時,如果提示“from .cv2 import * ImportError: DLL load failed: 找不到指定的模塊”,則需要使用Depends.exe查看dll依賴關系,如果缺少一些dll庫,可以安裝Visual C++ Redistributable for Visual Studio 2015(Visual C++ Redistributable for Visual Studio 2015)或者版本更高的reditexe試試!

后記:

以上是不是太折騰了,其實PyPI上早已幫我們編譯好相應安裝包了,執行一條語句即可完成安裝:pip install opencv-contrib-python

總結

以上是生活随笔為你收集整理的generate报错 make_如何安装opencv_contrib及解决其安装编译问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。