已下载,可以参考[1]链接;
1)官网下载:https://opencv.org/releases/
选择版本:3.4.6–Sources
2)github下载:https://github.com/opencv/opencv/tree/3.4.6
选择版本:Switch branches or tags按钮–Tags–3.4.6;
可以通过opencv官网,进入github下载网址;
1)解压opencv包,在opencv-3.4.6目录下新建build文件夹(与include平行目录);
2)cmd窗口中输入cmake-gui,打开cmake;
3)在cmake键面中“source code”输入: F:/opencv346s/opencv-3.4.6/opencv-3.4.6,“build the binaries”输入: F:/opencv346s/opencv-3.4.6/opencv-3.4.6/build;
4)点击Configure,根据VS版本选择:VS15 2017,platform:Win32, Use default native compliers,配置过程可能会出现一些警告(参考[2])可以忽略不用管,有些库是不需要使用的,如果需要用,则要针对这些错误进行配置。
5)Configure完成后,会出现一些红色的区域,勾选进行配置;
去掉勾:BUILD_TESTS、BUILD_opencv_ts、BUILD_opencv_python3、BUILD_opencv_python_bindings_generator
勾选:BUILD_opencv_world
6)配置完成后,再次点击configure,configuring done完成后,红色区域全部变成白色后(如果还有红色区域,需要再配置),点击Generate按钮生成,Generating done。
7)点击Open Project打开工程(或双击F:\opencv346s\opencv-3.4.6\opencv-3.4.6\build\OpenCV.sln),配置Debug win32,找到CMake Targets – ALL_BUILD – 生成/重新生成,过10分钟左右,出现“全部重新生成: 成功 23 个,失败 0 个,跳过 0 个”即编译成功,可以在“F:\opencv346s\opencv-3.4.6\opencv-3.4.6\build\lib\Debug”路径下找到opencv_world346d.lib文件。如果出现失败,找到对应的原因,如果不影响opencv_world346d.lib的生成,可以忽略。
8)找到CMake Targets – INSTALL – 生成/重新生成,出现“全部重新生成: 成功 24 个,失败 0 个,跳过 0 个”即编译成功。在“F:\opencv346s\opencv-3.4.6\opencv-3.4.6\build\install\include”文件夹下面会出现opencv和opencv2两个文件夹。步骤7)中的lib库也会在此生成“F:\opencv346s\opencv-3.4.6\opencv-3.4.6\build\install\x86\vc15\lib\opencv_world346d.lib”
9)到此,OpenCV源码编译完成,但是还有一个问题。新建项目,配置debug win32、包含目录、库目录、连接器输入,运行下面代码测试;
#include
#include
int main()
{
cv::Mat s = cv::imread("test.bmp", 1);
cv::imshow("11", s);
cv::waitKey(0);
}
此时会报错:“应用程序无法正常启动0xc000007b解决方案”,打开.sln所在平行目录下Debug文件夹,将“F:\opencv346s\opencv-3.4.6\opencv-3.4.6\build\install\x86\vc15\bin”目录下的opencv_world346d.dll拷贝到Debug文件夹下。再次生成、运行成功显示图像。
注意:
如若不想每个工程都这样拷贝一次,可以将opencv_world341d.dll文件拷贝到C:\Windows\SysWOW64这个文件夹里面即可。
将2.1步骤7中,配置Debug win32改为配置Release Win32,其他步骤一致。
可以在同一个build文件夹下执行重新生成操作:
生成opencv_world346.lib库在“F:\opencv346s\opencv-3.4.6\opencv-3.4.6\build\install\x86\vc15\lib”,此时有opencv_world346.lib和opencv_world346d.lib;
生成头文件include在“F:\opencv346s\opencv-3.4.6\opencv-3.4.6\build\install\include”;
生成dll在“F:\opencv346s\opencv-3.4.6\opencv-3.4.6\build\install\x86\vc15\bin”,此时有opencv_world346.dll和opencv_world346d.dll。
将2.1步骤4中platform:Win32改为x64;其他步骤不变。
将2.1步骤4中platform:Win32改为x64,步骤7中的配置Debug win32改为配置Release Win32;其他步骤不变。
[1] Windows下 Cmake + VS 编译 OpenCV (+ opencv_contribute)源码
[2] warning:
CMake Warning at cmake/OpenCVDownload.cmake:193 (message):
IPPICV: Download failed: 6;"Couldn't resolve host name"
For details please refer to the download log file:
F:/opencv346s/opencv-3.4.6/opencv-3.4.6/build/CMakeDownloadLog.txt
Call Stack (most recent call first):
3rdparty/ippicv/ippicv.cmake:42 (ocv_download)
cmake/OpenCVFindIPP.cmake:243 (download_ippicv)
cmake/OpenCVFindLibsPerf.cmake:12 (include)
CMakeLists.txt:794 (include)
打开“ F:/opencv346s/opencv-3.4.6/opencv-3.4.6/build/CMakeDownloadLog.txt”这个文件,问题是由于该文件中以此链接开头的https://raw.githubusercontent.com/下载路径都需要外网下载,所以在configure和generate的过程中,需要连接上外网。如果不成功可以在上外网上下载下来,放到指定位置。
CMake Warning at cmake/OpenCVDetectPython.cmake:81 (message):
CMake's 'find_host_package(PythonInterp 2.7)' founds wrong Python version:
PYTHON_EXECUTABLE=E:/anaconda/python.exe
PYTHON_VERSION_STRING=3.7
Consider specify 'PYTHON2_EXECUTABLE' variable via CMake command line or
environment variables
Call Stack (most recent call first):
cmake/OpenCVDetectPython.cmake:275 (find_python)
CMakeLists.txt:710 (include)
可以忽略此警告,在configure时,去掉python相关的配置,可消除警告。