下載:
vs2017社區版:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
opencv4.1.0:https://opencv.org/releases/
opencv_contrib4.1.0:https://github.com/opencv/opencv_contrib/releases
cmake:https://cmake.org/download/
一、opencv安裝
1.解壓opencv,並將opencv_contrib解壓在建立的build文件中。
2.添加環境變量:
D:\opencv4.1.0\build\bin
D:\opencv4.1.0\build\x64\vc15\bin
3.將opencv裏面的相關文件複製到C盤
將bin目錄中的opencv_world410.dll和opencv_world410d.dll文件複製到C:\Windows\SysWOW64.
將bin目錄裏面的opencv_ffmpeg410_64.dll複製到C:\Windows\System32.
二、VS2017
1.安裝選擇需要的工作負載:使用C++的桌面開發、Visual Studio擴展開發、Python.
2.建立空項目,選擇 視圖-其他窗口-屬性管理器,對Debug|X64下的Microsoft.Cpp.x64.user的屬性編輯。
在VC++包含目錄編輯添加:
D:\opencv4.1.0\build\include
D:\opencv4.1.0\build\include\opencv2
VC++包含目錄編輯添加:
D:\opencv4.1.0\build\x64\vc15\lib
在鏈接器-輸入-附加依賴項編輯添加:
opencv_world410d.lib
注:一些教程中也會添加opencv_world410.lib,但這樣後面會出錯,只添加帶b的即可。
Release|X64中的配置同上。
測試代碼:
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
// 讀入一張圖片(poyanghu縮小圖)
Mat img = imread("F:\\suoxiaotu\\poyanghu縮小圖.tif");
// 創建一個名爲 "圖片"窗口
namedWindow("圖片");
// 在窗口中顯示圖片
imshow("圖片", img);
// 等待6000 ms後窗口自動關閉
waitKey(6000);
return 0;
}
三、Cmake
1.安裝Install option選擇Add Cmake to the sysyem PATH for all users.
或
添加環境變量D:\cmake\bin
2.cmd 輸入nvcc -V驗證。
3.打開CMake Gui
分別找路徑:
D:\opencv4.1.0\sources
D:\opencv4.1.0\build
4.configure,然後選擇VS2017 , platform默認win32,如果是64位,一定要更改!!!不然會出錯。
再勾選4個:
BUILD_EXAMPLES
BUILD_opencv_world
OPENCV_EXTRA_MODULES_PATH:D:\opencv4.1.0\opencv_contrib\modules
WITH CUDA (以及OpenGL)
再次configure,由於使用的是CUDA10,編譯錯誤:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_cublas_LIBRARY (ADVANCED)
…
解決方案:
(1)在opencv安裝位置找到FindCUDA.cmake文件:
修改:
find_cuda_helper_libs(nppi)
爲
find_cuda_helper_libs(nppial)
find_cuda_helper_libs(nppicc)
find_cuda_helper_libs(nppicom)
find_cuda_helper_libs(nppidei)
find_cuda_helper_libs(nppif)
find_cuda_helper_libs(nppig)
find_cuda_helper_libs(nppim)
find_cuda_helper_libs(nppist)
find_cuda_helper_libs(nppisu)
find_cuda_helper_libs(nppitc)
修改:
set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")
爲
set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")
修改:
unset(CUDA_nppi_LIBRARY CACHE)
爲
unset(CUDA_nppial_LIBRARY CACHE)
unset(CUDA_nppicc_LIBRARY CACHE)
unset(CUDA_nppicom_LIBRARY CACHE)
unset(CUDA_nppidei_LIBRARY CACHE)
unset(CUDA_nppif_LIBRARY CACHE)
unset(CUDA_nppig_LIBRARY CACHE)
unset(CUDA_nppim_LIBRARY CACHE)
unset(CUDA_nppist_LIBRARY CACHE)
unset(CUDA_nppisu_LIBRARY CACHE)
unset(CUDA_nppitc_LIBRARY CACHE)
(2)找到OpenCVDetectCUDA.cmake文件
修改:
...
set(__cuda_arch_ptx "")
if(CUDA_GENERATION STREQUAL "Fermi")
set(__cuda_arch_bin "2.0")
elseif(CUDA_GENERATION STREQUAL "Kepler")
set(__cuda_arch_bin "3.0 3.5 3.7")
...
爲
...
set(__cuda_arch_ptx "")
if(CUDA_GENERATION STREQUAL "Kepler")
set(__cuda_arch_bin "3.0 3.5 3.7")
elseif(CUDA_GENERATION STREQUAL "Maxwell")
set(__cuda_arch_bin "5.0 5.2")
...
(3)將頭文件cuda_fp16.h(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include)添加到opencv\modules\cudev\include\opencv2\cudev\common.hpp
即在common.hpp中添加
#include <cuda_fp16.h>
configure done後生成,成功後open project
在VS2017中,點擊 生成-批生成
勾選INSTALL和ALL_BUILD,生成。
結束後在build/install中有:
未完…
參考:
VS2017配置opencv教程(超詳細!!!)
Windows10+VS2017+cmake 編譯opencv4.1 + opencv_contrib(含cuda)
opencv+CUDA9.1+vs2015環境搭建,編譯opencv庫,調用GPU加速運算
OpenCV3.3+CUDA9.0+Cmake3.9 環境搭建
windows10+vs2017+opencv3.4.1配置YOLOV4
YOLOv4 的各種新實現、配置、測試、訓練資源彙總