opencv_contrib4.4安装
opencv_contrib4.4安裝
一、前言
? ? ? ?安裝好配置好OpenCV后,本以為可以好好的開始學習一下OpenCV了,沒想到還有個opencv_contrib擴展模塊,什么?原來安裝的OpenCV只包含基礎的模塊,然而還有許多實用功能被放在了opencv_contib擴展模塊中,比如常用的人臉識別,生物視覺,特征點提取等眾多強大的功能,由于算法專利的保護,商用是要收錢的,這些功能被放在了擴展模塊opencv_contrib中,為了學習這些功能,硬著頭皮,再來安裝配置一下OpenCV的環境吧,確實比安裝基礎模塊復雜多了,因為需要編譯代碼。
二、下載與安裝
假設你已經下載了OpenCV,并已經安裝配置好了環境。
假設你已經安裝了CMake工具,我的版本是3.15.5
1.下載
下載4.4.0版本的 opencv_contrib,要和我電腦上安裝的OpenCV4.4.0的版本一致。下載速度賊慢,可以考慮在國內網站下載,比如gitee,就是更新沒有github快,目前好像最新版本是4.2.0,只能忍受github的龜速下載了。如下圖所示:
?
選擇4.4.0,單擊進入下圖所示頁面:
?
單擊“Source code(zip)”,開始下載,文件大小59.19M。等待中。。。
解壓壓縮包opencv_contrib-4.4.0.zip,把它解壓到自己指定的位置,我是把它和OpenCV放到了一起,如下圖所示:
?
2.CMake配置編譯
打開CMake工具,如下圖所示:
?
步驟1:選擇OpenCV源碼路徑,一般都是opencv/sources路徑下;
步驟2:選擇保存CMake編譯配置好的代碼的路徑,自己新建一個目錄即可;
步驟3:點擊Configure開始進行配置。彈出下圖所示的對話框:
?
步驟1:選擇適合你的VS的版本,我這里是VS2017版本的;
步驟2:平臺選擇x64的。選好以后點擊Finish按鈕。彈出下圖對話框:
?
?
CMake開始配置生成VS2017版的代碼工程。
?
Configure結束后出現了紅色界面,不要害怕,再點一次Configure按鈕。再進行一次Configure,紅色界面消失了,如下圖:
?
至此,opencv 的源碼的Configure勝利結束。至革命勝利只是一個小段落,接下來要進行 opencv_contrib源碼的添加了,
下面開始添加,如下圖所示:
?
步驟1:勾選上Grouped和Advanced兩個復選框。
步驟2:為了生成的opencv的lib和dll包含在一個文件opencv_world.lib和opencv_world.dll內,我們要找到 BUILD點開并勾選上 BUILD_opencv_world。如上圖所示。
?
步驟3:在OPENCV下勾選上 OPENCV_ENABLE_NONFREE項。
據說如果不勾選會在在運行SIFT、SURF等函數時會出現問題,出現以下報錯:
Error: The function/feature is not implemented (This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library) ;
步驟4:在OPENCV 下 OPENCV_EXTRA_MODULES_PATH 項,添加opencv_contrib的路徑,他的路徑是我們解壓的opencv_contrib 文件夾下的 module 文件夾的路徑,我的是D:\opencv\opencv_contrib\modules,如上圖所示。
接下來,再次點擊 Configure按鈕,彈出現下圖所示對話框:
?
又出現了紅色的部分,有緣分啊,先別管他。再次點擊Configure按鈕,運氣好,紅色消失。一般都是這么解決,如果紅色不消失,估計有點麻煩,
點擊Generate按鈕,開始執行。
結果如下圖所示:
?
勝利,又前進了一步,
3.使用VS2017編譯生成OpenCV庫文件
趁著一股氣我們進行下一步,找到編譯好的文件夾,我這里是D:\opencv\build,我這個文件夾本來就有,有點亂,用VS2017打開文件夾下找的OpenCV.sln解決如下圖所示:
?
編譯之前要確認Debug的配置一定是X64的。 右鍵單擊解決方案’OpenCV’,在彈出的菜單中選擇“生成解決方案”。如下圖所示,開始編譯,時間有點長,估計10來分鐘,慢慢等待,喝杯茶。
代碼工程編譯過程中,如下圖所示:
?
4.編譯過程中出現錯誤的解決辦法
1.安裝OpenCV時提示缺少boostdesc_bgm.i文件的問題解決方案(附帶百度云資源)
2.No such file or directory的錯誤
1)錯誤如圖所示:?
修改方法:
將opencv\sources\modules\features2d\test文件夾下的 test_descriptors_regression.impl.hpp
test_detectors_regression.impl.hpp
test/test_detectors_invariance.impl.hpp
test_descriptors_invariance.impl.hpp
test_invariance_utils.hpp
拷貝到opencv_contrib/modules/xfeatures2d/test/路徑下,如下圖所示:
?
2)?
修改方法:
將opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp文件中的代碼: #include features2d/test/test_detectors_regression.impl.hpp #include features2d/test/test_descriptors_regression.impl.hpp
改為: #include "test_detectors_regression.impl.hpp" #include "test_descriptors_regression.impl.hpp"
3將opencv_contrib/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp文件中的代碼:
#include "features2d/test/test_detectors_invariance.impl.hpp"
#include "features2d/test/test_descriptors_invariance.impl.hpp"
?
改為:
#include "test_detectors_invariance.impl.hpp"
#include "test_descriptors_invariance.impl.hpp"
?
接下來,右鍵單擊項目"INSTALL"->“僅用于項目”->“僅生成INSTALL”。開始生成。
生成成功,如下圖所示:
包含擴展庫的opencv 的庫就已經生成到 build 文件夾下的 install 文件夾中了,結構和OpenCV的是一樣的,
我們配置OpenCV環境的時候,需要把路徑修改到install文件夾下的路徑。如下圖所示:
?
?
5.注意事項
注意:把環境變量換成最新編譯出OPenCV的路徑D:\opencv\build\install\x64\vc15\bin
?
6.關于CMakeDownloadLog.txt中下載失敗的文件的問題的解決:
1).從CMakeDownloadLog.txt中找到下載失敗的文件下載的地址,復制到迅雷中去下載,是以"https://raw."開頭的,有的下載很快,有的下載很慢,迅雷如果一直下載失敗,可以百度網盤試試。
2).把下載的文件放到對應的文件夾內,一般都是在.cache文件夾內,此時需要對文件進行改名,以opencv_videoio_ffmpeg_64.dll為例,文件名字是需要加上文件的MD5值在文件名前面的。MD5值存放在ffmpeg的cmake文件中:
opencv\sources\3rdparty\ffmpeg\目錄中的CMake文件中的Md5值要和opencv\sources.cache\ffmpeg目錄中的文件名中的MD5要保持一致,并且要和文件的MD5值保持一致。編譯才會通過。如下圖所示:
?
當CMakeDownloadLog.txt中出現如下圖所示的內容時,說明編譯成功:
?
三、簡單測試
寫一段簡單的代碼,調一下openc_contrib中的模塊,以SIFT為例,代碼如下:
include "pch.h" #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> ? ? int main() {//提取特征點方法//SIFTcv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();cv::waitKey(0);return 0; } // //特征點出現SIFT不被識別的錯誤。如下圖:
原來是OpenCV 4.4.0 SIFT 遷移至主庫了(因為SIFT專利過期),以后可以免費使用了,為了測試OpenCV_contrib是否成功,我們換成SURF來測試一下:
/ opencv_contrib_test.cpp : 此文件包含 "main" 函數。程序執行將在此處開始并結束。 // ? #include "pch.h" #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> ? ? int main() {//SURFcv::Ptr<cv::xfeatures2d::SURF> surf = cv::xfeatures2d::SURF::create();cv::waitKey(0);return 0; }編譯成功,說明opencv_contrib安裝成功了。
?
?
?
?
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的opencv_contrib4.4安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV4.4.0+VS2017 环
- 下一篇: OpenCV图像的加载、显示