一、下載opencv對應安裝包及擴展包
(1)opencv安裝包下載
Opencv_contribute GitHub 下載點擊opencv_contrib進入后搜索下載所需要的版本
因國內鏡像原因,下載速度會較慢,且容易斷掉,這里提供4.0.0版本的網盤下載地址:
鏈接: https://pan.baidu.com/s/16olmX0csQRdlBhEotqn_tA 提取碼: ev2y
(2)下載解壓后的文件夾如下:
其中:
opencv是.exe安裝解壓后的文件夾,opencv_contrib-4.0.0是從github下載的擴展包,
opencv-4.0.0_build_x64是用於后面cmake存放編譯文件的自定義文件夾。
二、cmake下載
官網下載:https://cmake.org/download/
安裝時選擇對應平台即可,我是選擇win64 x64.
三、cmake
(1)configure
1、2 步后點開configure
設置完點擊Finish
configure后出現如下紅色字體警告的解決方法:
1.是否斷網,若為斷網,重新連接后再次configure;
2.因國內網絡原因無法自動下載,則進行手動下載:
1)打開編譯輸出的文件夾,找到打開CMakeDownloadLog.txt
部分信息如下:
1 #use_cache "F:/opencv400/opencv/sources/.cache" 2 #do_copy "opencv_ffmpeg.dll" "849286ccc527c99e5a218b67f13c6e8c" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll" "F:/opencv4.0.0/opencv-4.0.0_build_x64/3rdparty/ffmpeg" 3 #missing "F:/opencv4.0.0/opencv-4.0.0_build_x64/3rdparty/ffmpeg/opencv_ffmpeg.dll" 4 #check_md5 "F:/opencv400/opencv/sources/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" 5 #mismatch_md5 "F:/opencv400/opencv/sources/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" "d41d8cd98f00b204e9800998ecf8427e" 6 #delete "F:/opencv400/opencv/sources/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" 7 #cmake_download "F:/opencv400/opencv/sources/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll" 8 # timeout on name lookup is not supported 9 # Trying 173.252.110.21:443... 10 # TCP_NODELAY set 11 # connect to 173.252.110.21 port 443 failed: Timed out 12 # Failed to connect to raw.githubusercontent.com port 443: Timed out 13 # Closing connection 0 14 #
大致意思,就是無法從:"F:/opencv400/opencv/sources/.cache"復制 簽名為"849286ccc527c99e5a218b67f13c6e8c"、下載地址為
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll"的
"opencv_ffmpeg.dll"到"F:/opencv4.0.0/opencv-4.0.0_build_x64/3rdparty/ffmpeg/opencv_ffmpeg.dll"
因此,我們直接從下載地址下載"opencv_ffmpeg.dll"更改名字為"簽名-opencv_ffmpeg.dll"(-opencv_ffmpeg.dll只是對照所貼文本舉例子,具體需對照txt內容更改)至"F:/opencv400/opencv/sources/.cache"
或者不更改名字直接存放到"F:/opencv4.0.0/opencv-4.0.0_build_x64/3rdparty/ffmpeg/"。
其他缺失文件照以上步驟進行替換。
注意:打開下載.cmake時不是直接下載文件,而是網頁顯示,此時右鍵另存為即可:
2)如果有其他缺失的文件,如安裝包,對照CMakeDownloadLog.txt下載改名存放至對應文件夾即可,下載完后重新configure,configure done后不會出現之前的警告項。
3)勾選OPENCV_ENABLE_NONFREE,並選擇路徑至我們擴展包下的modules文件夾
4)后續只生成一個opencv_world400.dll文件時則需勾選以下選項
再次點擊Configure后如果還是會有文件缺少的情況,照上面步驟手動下載。下載完后繼續Configure直至提示框沒有警告(PS:太艱辛了)。
(2)如果configure后信息輸出窗口沒有紅色警告,點擊Generate,Generate done 后 Open Project,會自動VS打開解決方案 Opencv.sln
四、VS編譯生成Opencv庫文件
1、選擇模式及對應平台后生成解決方案;
問題及解決(未出現可直接進入第2步):出現LNK1104.... cannot open file '…\lib\Debug\opencv_world40d.lib’的問題,網上查了一下說是win10 SDK版本低的問題,所以就先下載安裝一個較最新的SDK,
划重點:VS2015 對應的win10 SDK不要超過14393,看這里:https://blog.csdn.net/Namcodream521/article/details/78493921,(PS:這會我已經裝了18362...)
win10 SDK下載地址:https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk,(PS:划重點)這個時候需要把舊的SDK版本卸載,然后重新Configure、Generate、Open Project。
這時在cmake里面會提示win10 SDK版本,如果沒卸載舊的SDK,它還是會使用舊的make(PS:一把鼻涕一把淚啊...)...
Open Project后進入VS需先設置win 10 SDK,不能直接生成(PS:又有一個坑...),設置過程如下圖:
確定后生成解決方案(PS:還是會有錯誤提示,2333....),同樣是LNK1104.... cannot open file '…\lib\Debug\opencv_world400d.lib’這個錯誤,重新定位一下,lib沒生成,那就先單獨生成opencv_world400d.lib,
找到opencv_world,右鍵僅生成該項目,出現rc.exe未啟動(PS:定位到了問題,仿佛看到了希望)
按網上所說,將rc.exe的路徑添加至系統變量,重啟VS...
繼續單獨生成opencv_world400.lib...還是不行(PS:崩潰)
這個時候,試着把windows目標平台 切換為8.1,神奇般的可以正常生成了.所以我一開始不能生成的原因可能不是因為我的win10 sdk太低,而是太高,導致不支持VS2015...出現rc.exe無法啟動的各種情況.
2、僅生成INSTALL
五、編譯完成
此時該目錄下的文件及文件夾就跟從官網下載.exe安裝解壓后的一樣.....