學習到opencv特征檢測部分,有的特征檢測api不在opencv基礎庫中,需要額外下載,再對opencv進行編譯,下面記錄一下opencv的編譯過程,使用的opencv版本是4.12
首先上opencv官網上下載對應版本的source壓縮包
下載完畢后解壓
然后去github上下載對應的contrib包
https://github.com/opencv/opencv_contrib/releases/tag/4.1.2
如果ubuntu系統就下載下面的
cmake的下載
下載的最新的即可
下載完一路next就可以了,要把path添加到系統路徑中
編譯步驟
1.configure
首先要對opencv的release包進行編譯,我新建了一個文件夾叫opencv4.12,然后在里面建立兩個文件夾,一個叫build,一個叫source,將解壓的源碼放在source中
cmake的路徑選擇如圖
build是專門存放編譯后文件的
因為我的電腦里沒有python,所以第一次configure的時候會報錯,需要將python的部分去掉
然后再進行configure
發現會報這個錯誤,提示我找不到ippicv_2019_win_intel64_20180723_general.zip這個文件
即使是我在對應目錄下放了這個文件也找不到
這是需要打開bulid文件夾下的cmakedownload文件
文件中使用ctrl+f搜索這個文件,可以看到他的哈希值,下載地址和存放目錄,這是先不管他的存放目錄,打開source目錄下opencv包中的.cache文件夾,找到其中的ippicv文件夾,將ippicv_2019_win_intel64_20180723_general.zip文件放進去,同時要復制他的哈希值
修改如下
這樣就cmake會先從本地找這個文件進行生成,不去網上下載了,注意哈希值和文件名之間一定要有“-”,否則是無效命名
再進行configure會提示我缺少
ffmpeg.cmake
opencv_videoio_ffmpeg.dll
opencv_videoio_ffmpeg_64.dll
文件
后兩個dll下載下來放到build/3rdparty/ffmpeg文件夾中就可以了,ffmpeg.cmake文件在source的同樣文件夾中有,直接復制過來就行了
解決完這三個問題還會報錯
提示我缺少ffmpeg_version.cmake文件
我總cmakedownloadfile中找到了他都信息(哈希值,下載地址和存放路徑)
然后將下載地址復制進瀏覽器,發現是一頁文本,因此我在對應目錄下新建ffmpeg_version.cmake文件,然后將網頁中的內容復制到文件中,進行configure發現仍會報同樣的錯誤,問題並沒有解決
所以我嘗試另一種方法,在source文件夾的opencv包中的.cache文件夾中放入對應的ffmpeg_version.cmake文件和兩個dll文件,然后在文件前面添加上對應的哈希值,參照https://blog.csdn.net/pyt1234567890/article/details/106525475/
但是問題仍沒有解決,最終在https://www.cnblogs.com/huluwa508/p/10142718.html中找到原因,要將這個文本網頁直接下載下來
然后他會以txt格式保存ffmpeg_version.cmake.txt,將最后的txt拓展名去掉,在進行configure就不會報錯了
最后還會遇到這個錯誤
勾掉這個選項即可
此時configure順利通過,再點generate即可,這是可以看見opencv的解決方案已經出現了
打開,選擇cmakeTarget工程下的ALLBUILD進行生成