OpenCV之contrib模塊編譯與This algorithm is patented and is excluded in this configuration解決辦法

This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library
一種解決方式:
在這裏插入圖片描述

1 OpenCV之contrib模塊編譯

兩者都使用了cmake-gui這個cmake工程管理軟件,大致流程差不多,下面分析下幾個不同之處。在之前我還是先把資源鏈接弄出來:
你需要opencv_contrib-xxx + cmake,擴展模塊的版本號要和之前裝的opencv的版本號的一致。
opencv_contrib-xxx(選擇zip就好,解壓即可;.tar.gz是Linux用的):
https://github.com/opencv/opencv_contrib/releases
cmake(.msi安裝包,zip解壓即可使用):
https://cmake.org/download/
Linux直接用命令即可,cmake-curses-gui是黑白的那種,還是cmake-gui好用些。

apt-get install cmake cmake-curses-gui cmake-gui

1.1 contrib在linux上編譯

你可以參考我的博客,其中有關於opencv2.4的編譯詳細流程,contrib模塊僅需要簡單的修改下,下面提及:
https://blog.csdn.net/weixin_39956356/article/details/91348030#2_opencv24_27
注意問題:
(1):linux下編譯出來的默認是64位的,除非你裝了32位的編譯器,其實linux逐漸在弱化對32位程序的支持。而window還大量存在32位應用程序。

1.2 contrib在windows上編譯

同樣你可以參考上面的文章,因爲都是用的cmake-gui,下面先指出幾個易錯的地方。
(1):正如上面提及的,window存在大量32位應用程序。所以務必清楚你的應用場景,是32位?64位?搞錯就得多花一個小時。。運行的時候64位選擇X64,32位選擇行X86,下面是一個64位例子:
在這裏插入圖片描述
那麼,如何讓cmake知道你即將編譯是32位?還是64?
答:不同版本的cmake做法有些許不同, 在最新的cmake(3.16)中默認是64位,注意下圖的第二欄,32位對應x86,64位對應x64,而且不同的vs版本默認的不一樣,比如VS2019默認x64,VS2017默認x86。

在這裏插入圖片描述
cmake之前的版本,像下面的這種,後面帶了""Win64"就是64位,不帶就是32位。注意你實際遇到的情況?
在這裏插入圖片描述
(2):勾選OPENCV_ENABLE_NONFREE ,否則xfeature2d的算法用不了,它們已經申請了專利。
當然專利算法,商業收費我就不知道了;還有一個方法,你就不要用新的版本,用3.2版本之前的。
在這裏插入圖片描述
(3):設置正確的contrib路徑,務必到modules
(4):還有一個很討厭的下載問題,很慢很慢,慢到無語。你在編譯的時候會出下幾個需要下載的地方,這是你可以自己把它先下下來。

  1. (sources.cache):sources文件夾有個.cache文件夾,下載的文件默認放在這裏的。sources是opencv的源碼。
  2. 當cmake下載需要的文件時,會在build文件夾下生成CMakeDownloadLog.txt,裏面有下載的原始鏈接及檢驗碼,編譯我們默認會新建build文件夾。
  3. CMakeDownloadLog.txt之後,有校驗碼–就是一串很長的字母數字,還有下載鏈接及文件名。下面是一個例子,建議使用IDM下載,大約200k左右。下載結束後,合成需要的文件名,前面加前綴“校驗碼”!!!,放在sources\.cache\ippicv下,之後重新cmake構建,如此反覆直到生成工程。建議仔細看看CMakeDownloadLog.txt文件。
  4. 最後我會把我的打包上傳,應當注意32位。64位下載文件不一樣,不同版本也不一樣,我的是OpenCV-3.4.6,裏面還包含contrib需要下載文件,通用的。
    在這裏插入圖片描述
    合成需要的文件名:
    在這裏插入圖片描述
    contrib需要下載文件,通用:
    在這裏插入圖片描述
    下圖由於長時間無法下載,導致cmake出錯,顯示解決的方法:
    在這裏插入圖片描述
    (5):BUILD_opencv_world:代表把所有.dll打包成一個。
    如果你還要支持python,需要提起安裝python哦,編譯結果生成python文件夾下面的cv2有你需要的.pyd。
    默認會編譯OpenCL,並行加速,當然還有kml(intel的並行庫收費),OpenBlas,CUDA之類的。其他的不細說了,你用的時候自然明白,默認即可。
    在這裏插入圖片描述
    (6):“Configure“後就可以選擇三方庫的路徑了,還需要”Generate”,成功後會生成OpenCV.sln
    在這裏插入圖片描述
    在這裏插入圖片描述
    (6):找到解決方案資源管理器,找不到就上面索搜即可,如果你之前編譯過,只需要重新生成即可。
    在這裏插入圖片描述
    (7):配置我們的工程了
    https://blog.csdn.net/weixin_39956356/article/details/102985985

2 文件下載

鏈接:https://pan.baidu.com/s/1HcWv-tldwB59PQVnpWPtjA
提取碼:tazp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章