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文件

猜你喜欢

转载自blog.csdn.net/cyy1104/article/details/130089256