> 文章列表 > VSCODE配置OPENCV编译环境(windows)

VSCODE配置OPENCV编译环境(windows)

VSCODE配置OPENCV编译环境(windows)

参考文章:

https://www.cnblogs.com/kensporger/archive/2020/02/19/12320622.html

1. 安装MinGW-64 和 CMake,这两个一定要把环境变量添加到电脑的环境变量中,并且打开cmake-gui,细节见上文链接

2.生成MakeFiles。

          ①先从opencv官网上下载opencv windows源码,建议先在 

                C:\\Windows\\System32\\drivers\\etc\\hosts文件最后追加:

     151.101.72.133 raw.githubusercontent.com

          因为cmake-gui会下载一些文件,这些文件都在raw.githubusercontent.com上,如果  不修改一下hosts,许多文件很可能会下载失败。

    打开cmake-gui后选择源文件路径和MakeFiles保存路径(自选路径),如图:

         sourcecode指的是你下载的opencv源码,第二个是你要将编译以后的代码放置的路径,可以自己创建

        然后再在compilers中选择 c和c++的编译器 ,c选择gcc, c++选择 g++

        

        执行过程中消息框会出现一堆红色信息,最后显示Configure done,是正常的。如果执行时中断,则存在其他问题。在执行完后,勾选BUILD_opencv_worldWITH_OPENGLBUILD_EXAMPLES,不勾选WITH_IPP、WITH_MSMFENABLE_PRECOMPILED_HEADERS(如果有的话),CPU_DISPATCH选空。如果要编译opencv_contrib,则需要在OPENCV_EXTRA_MODULES_PATH 把路径选择为解压的opencv_contrib文件中的“modules”文件夹。

  再次点击Configure,这次执行完后仍有错误如下:

  

 

也就是说前面虽然修改了hosts,但是有些文件仍然没有成功下载,解决的方法就是手动下载它们。可以用浏览器访问下载链接,或者使用迅雷等下载器进行下载。CMakeDownloadLog.txt文件中列出了所有丢失文件的下载链接,比如:

    https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll

  一个个访问这些链接,下载后放到OpenCV源文件里.cache的相应子文件夹中替代原缓存文件(下载的文件重命名为相应地缓存文件名并删除原缓存文件)。这样从头到尾下载CMakeDownloadLog.txt中列出的所有丢失文件,之后,再次Configure,理论上不会出现红色的错误消息了。然后点击Generate,正常的话会显示非红色的消息Generate Done

 此处可能发生的问题就是你顺着这个链接去找源文件,但是打不开这个网站,此处推荐一个网站,GitHub Proxy 代理加速, 点进去以后就可以直接使用,此处需注意:

注意:
          1. https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/ffmpeg_version.cmake" 无法直接下载,
而是直接打开了ffmpeg_version.cmake,可以右键网页选择另存为 ffmpeg_version.cmake.txt,然后再改为ffmpeg_version.cmake。这里如果自己新建一个txt,然后直接将网页上的内容拷进去,然后再改后缀为.cmake是不行的,会提示md5不匹配。(我的建议是另存为后,用VS打开之前是空的对应文件,然后用VS打开另存为的文件,将另存为的文件内容直接复制给空文件,保存空文件,这样文件的属性不会改变

        2、不同版本的OpenCV对应的 opencv_ffmpeg.dll 等缺失文件的 md5 签名是不一样的(可以直接重新命名为原来空文件的名字)

3.编译opencv
        

CMD到MakeFiles所在文件夹,执行minGW32-make命令,或者使用多线程minGW32-make -j 4命令:

  

编译完成后记得输入minGW32-make install完成装载,这样才会生成Install文件夹。

4.调配三大json文件

launch.json

"version": "0.2.0","configurations": [{"name": "opencv3.4.2 debuge","type": "cppdbg","request": "launch","program": "${fileDirname}\\\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": true,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "gdb","miDebuggerPath": "D:/enviroment/mingw/mingw64/bin/gdb.exe","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": false}],"preLaunchTask": "opencv3.4.2 compile task"},{"type": "node","request": "launch","name": "启动程序","skipFiles": ["<node_internals>/"],"program": "${file}"}]
}

cpp_properties.json

"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/","D:/code/cppyolov5/opencvs/opencv/build/x64/mingw/install/include","D:/code/cppyolov5/opencvs/opencv/build/x64/mingw/install/include/opencv2"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.17763.0","compilerPath": "D:/enviroment/mingw/mingw64/bin/gcc.exe","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "clang-x64"}],"version": 4

tasks.j

"version": "2.0.0","tasks": [{"type": "shell","label": "opencv3.4.2 compile task","command": "D:\\\\enviroment\\\\mingw\\\\mingw64\\\\bin\\\\g++.exe","args": ["-g","${fileDirname}\\\\*.cpp","-o","${fileDirname}\\\\${fileBasenameNoExtension}.exe","D:\\\\code\\\\cppyolov5\\\\opencvs\\\\opencv\\\\build\\\\x64\\\\mingw\\\\bin\\\\libopencv_world453.dll","-I","D:/code/cppyolov5/opencvs/opencv/build/x64/mingw/install/include","-I","D:/code/cppyolov5/opencvs/opencv/build/x64/mingw/install/include/opencv2"],"options": {"cwd": "D:\\\\enviroment\\\\mingw\\\\mingw64\\\\bin"},"problemMatcher": ["$gcc"],"group": "build","detail": "编译器: D:\\\\enviroment\\\\qt\\\\Tools\\\\mingw730_64\\\\bin\\\\cpp.exe"},{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "D:\\\\enviroment\\\\qt\\\\Tools\\\\mingw730_64\\\\bin\\\\g++.exe","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}]
}

最后再使用ctrl + shift + b 运行对应的exe文件