win10 系统 VSCODE 配置opencv

之前一直在Linux系统下使用OpenCV或在Windows系统下VC配置OpenCV,今天换了新电脑特地配置了一下vscode 环境下的使用,遇到一点波折,特记录一下。

1.下载MinGW并配置环境变量

下载 mingw到本地。

 下载该文件后解压,解压路径视为安装路径,可改名为mingw64。

添加环境变量。D:\Program Files (x86)\mingw64\bin
在bin目录下输入cmd,调出 cmd命令窗口。

输入: gcc -v 查看版本信息确认配置成功。

输入: mingw32-make -v make 版本信息确认配置成功。

 2. 下载Cmake并配置环境变量

下载cmake 

 下载该文件后解压,解压路径视为安装路径,可改名为cmake-3.24.0-rc3-windows-x86_64。

 添加环境变量。D:\Program Files (x86)\cmake-3.24.0-rc3-windows-x86_64\bin
 在bin目录下输入cmd,调出 cmd命令窗口。

输入:cmake -version 查看版本信息确认配置成功。

特别注意:如果安装MinGW后把默认的mingw32-make.exe改成了make.exe会出现下面截图的错误。故现在只需将make.exe恢复成原名mingw32-make.exe即可。出现此类错误是因为MinGW安装目录缺少mingw32-make.exe导致的。

3.安装vscode

win10 系统下载安装vscode,下载地址vscode

下载完成后直接安装。具体配置可参考vscode配置

4.下载配置opencv及opencv_contrib

4.1下载软件

下载OpenCV 源文件到本地,其中版本对应为4.5.3避免新版本不稳定。

 解压到指定目录下D:\opencv, 并新建一个文件夹 D:\opencv\build\x64\mingw

 

下载组件opencv_contrib 解压后如下

 左下角命令窗口打开cmake-gui.exe,弹窗中首先需要确认编译目录和构建目录(上述新建),

然后点击配置,也就是Configure,选择MinGW Makefiles:

点击finish,系统就会开始检查配置,下方的控制台会开始打印调试信息。等待结束。

结束后,cmake可能会显示一片红,此时请再次点击Configure,结束后将屏幕中仍然为红的选项勾掉,然后再配置,直到没有红色为止。

在执行完后,勾选BUILD_opencv_worldWITH_OPENGLBUILD_EXAMPLES,不勾选WITH_IPPWITH_MSMFENABLE_PRECOMPILED_HEADERS(如果有的话),CPU_DISPATCH选空。

OPENCV_EXTRA_MODULES_RATH一项,添加你刚刚解压的contrib4.5.3中的modules目录,

D:\opencv\opencv_contrib-4.5.5\modules
然后点击Generate,准备生成最终的Makefile.

注意:对于上述配置过程中如果遇到 CMake编译OpenCV时opencv_ffmpeg.dll等下载失败的话,可参考这篇文档opencv_ffmpeg.dll处理参考,简单而言就是在构建目录下的CMakeDownloadLog文件中找出对应的cmake文件路径,在网页上另存为 ffmpeg_version.cmake 文件(后缀cmake,不是txt),将此cmake文件放入 D:\opencv\build\x64\mingw\3rdparty\ffmpeg(没有ffmpeg可新建)https://raw.githubusercontent.com/opencv/opencv_3rdparty/213fcd5d4897319a83207406036c4a5957fba010/ffmpeg/ffmpeg_version.cmake

如果上述地址无法下载,可在ffmpeg代理下载路径,输入上述地址后下载。

通常情况下在第一次Configure窗口提示opencv_ffmpeg.dll下载失败后,再次Configure,可能会下载成功至cache路径下,检查opencv源文件解压后的路径D:\opencv\opencv-4.5.5\.cache

 将对应的三个文件改名后拷贝到build对应路径下

然后再次重复上述configure和generate步骤直到Configuring done 和Generating done。

4.2 make

上述该配置的都完成了,现在需要去编译生成执行程序。在D:\opencv\build\x64\mingw 路径下进入cmd窗口,执行如下命令:

minGW32-make -j 4

如果电脑配置较好可执行 minGW32-make -j 8

执行编译命令报错

[ 47% ] Building RC object modules/world/CMakeFiles/opencv_world.dir/vs_version.rc.obj
gcc: error: long: No such file or directory
D:\Program Files\mingw64\bin\windres.exe: preprocessing failed.
mingw32-make[2]: *** [modules\world\CMakeFiles\opencv_world.dir\build.make:13156: modules/world/CMakeFiles/opencv_world.dir/vs_version.rc.obj] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:4789: modules/world/CMakeFiles/opencv_world.dir/all] Error 2
mingw32-make: *** [Makefile:179: all] Error 2

根据提示: modules\world\CMakeFiles\opencv_world.dir\build.make:13156 

打开对应文件所在行build.make:13156 ,vs_version.rc.obj文件没有正常生成,可手动命令生成

在D:\Program Files\mingw64\bin 所在窗口进入cmd

D:\Program Files\mingw64\bin>windres.exe  D:\opencv\build\x64\mingw\modules\world\vs_version.rc -O coff D:\opencv\build\x64\mingw\modules\world\CMakeFiles\opencv_world.dir\vs_version.rc.obj

4.3 install

没有出错的话,我们就继续在该目录输入命令:
minGW32-make install
这样会生成一个install目录。D:\opencv\build\x64\mingw\install

编译完成后,添加环境变量:
D:\opencv\build\x64\mingw\bin

最终得到 mingw、cmake、opencv配置后的环境变量如下.

5.vscode配置opencv

5.1配置c_cpp_properties.json

在vscode界面下,按下Ctrl+Shift+P打开vscode的内置命令块,输入C++ Configurations,找到下图这个选项:

 按下回车,vscode便会在当前工作目录生成一个.vscode文件夹,其中创建一个c_cpp_properties.json这样的配置模板文件。找到"includePath"这一项,填入正在使用的编译器的include目录即可实现配置c_cpp_properties.json如下。

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "D:/Program Files (x86)/mingw64/include/**",
                "D:/opencv/build/x64/mingw/install/include",
                "D:/opencv/build/x64/mingw/install/include/opencv2"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "D:\\Program Files (x86)\\mingw64\\bin\\g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++11",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

5.2配置launch.json

在vscode 主菜单 运行/添加配置 弹出的窗口中选择gdb启动,然后配置launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "opencv4.5.3 debuge",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,  //这里如果为 false,则说明调试直接运行。(反之则停止)
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true, //是否调用外部cmd
            "MIMode": "gdb", 
            "miDebuggerPath": "D:/Program Files (x86)/mingw64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "opencv4.5.3 compile task"
        }
    ]
}

5.3配置task.json

在vscode主菜单 终端(T)/配置任务  弹出窗口配置如下task.json

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "opencv4.5.3", //任务名称,要和launch.json的"preLaunchTask"字段对应
			"command": "D:\\Program Files (x86)\\mingw64\\bin\\g++.exe", //编译器路径
			"args": [
				"-g", //控制台编译时输入的-g,表示生成调试有关信息,编译生成可执行文件调试
				"-std=c++11",
        		"-fexec-charset=GBK",// 令mingw按GBK编码⽣成exe⽂件 GBK
        		"-finput-charset=UTF-8",// 令mingw按UTF-8编码处理(此参数可以不设置)//
				"${file}",//要编译的文件,默认只能编译单个文件
				"-o", //指定生成的可执行文件的名字,编译不加 -o 默认生成就是a.exe
				"${fileDirname}\\${fileBasenameNoExtension}.exe",
                "-I","D:/opencv/build/x64/mingw/install/include",
                "-I","D:/opencv/build/x64/mingw/install/include/opencv2",
                "-I ${fileDirname}\\..\\include",//添加本地文件的头文件路径,否则提示头文件找不到
				"-L","D:/opencv/build/x64/mingw/bin",
				"-l","libopencv_world453"
				
			],
			"options": {
				"cwd": "${workspaceFolder}"  //当前工作目录
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true // 开启编译快捷键, ctrl + shift + B
			},
			"detail": "编译器: D:\\Program Files (x86)\\mingw64\\bin\\g++.exe"
		}
	]
}

其中,-I(大写i)表示导入头文件文件夹,-L表示依赖库导入,-l(小写L)表示依赖库中dll文件的名称,dll的名称要按照下载的opencv库里的内容加以修改,libopencv_worldxxx.dll,该文件是所有依赖的集成体,不再需要一些文档里所说的一条一条添加各个独立的dll。

5.4安装code-runner插件

如果不采用上述配置方式,可安装code-runner插件,则无需上述三个文件。

                

在左侧“扩展”安装code-runner后 左下角 管理/设置 搜索code-runner将Code-runner: Executor  Map 对应settings.json中的cpp内容改为如下

单个cpp文件编译:

"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -std=c++11-I D:\\opencv\\build\\x64\\mingw\\install\\include -L D:\\opencv\\build\\x64\\mingw\\bin -l libopencv_world453 && $dir$fileNameWithoutExt",

多个cpp文件编译:

"cpp": "cd $dir && g++ *.cpp -I D:/opencv/build/x64/mingw/install/include -I D:/opencv/build/x64/mingw/install/include/opencv2 -L D:/opencv/build/x64/mingw/bin -l libopencv_world453 && $dir$fileNameWithoutExt -o $fileNameWithoutExt && $dir$fileNameWithoutExt -std=c++11 ",

       

5.5测试运行

配置完成后,新建一个cpp文件编译运行测试效果。输出窗口/ Ctrl +shift +B 编译生成exe文件,然后右上角 “ 运行C/C++程序” 对应三个配置文件的配置方式,或 Run code 对应第二种配置方式。

6. 其它说明

6.1命令窗口编译运行 

在终端窗口采用如下命令编译

g++ ".\openCV\example0.cpp" -o ".\openCV\example0.exe"

终端窗口提示 fatal error: opencv2/opencv.hpp: No such file or directory

正确的做法应该是带上include的那些文件:

g++ hello_opencv.cpp -o hello_opencv.exe -std=c++11-I D:/opencv/build/x64/mingw/install/include -I D:/opencv/build/x64/mingw/install/include/opencv2 -L D:/opencv/build/x64/mingw/bin -l libopencv_world453

在对应路径下生成 hello_opencv.exe

然后 .\hello_opencv.exe 可以看到运行结果,与直接采用Run Code运行得到的结果一致

6.2终端窗口运行出现乱码

中文的windows下的cmd默认使用GBK的编码, 每次需要的时候只要在VSCode终端输入命令:chcp 65001, 切换代码页到使用UTF-8就可以解决中文代码的问题,如果每次修改比较麻烦。

在命令窗口powershell 下使用命令编译运行代码,若源文件含中文会出现乱码,可在文件/首选项/设置,右上角打开设置 修改setting.json后重新启动新的powershell再次运行即消除乱码。

{
    "workbench.colorTheme": "Default Dark+",
    "terminal.integrated.profiles.windows": {
        "Command Prompt": {
            "path": "C:\\Windows\\System32\\cmd.exe",
            "args": ["-NoExit", "/K", "chcp 65001"]
        },
        "PowerShell": {
            "source": "PowerShell",
            "args": ["-NoExit", "/C", "chcp 65001"]
        }
    },
    "terminal.integrated.defaultProfile.windows": "PowerShell",

    "code-runner.executorMap": {
        "javascript": "node",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -std=c++14 -I D:/opencv/build/x64/mingw/install/include -I D:/opencv/build/x64/mingw/install/include/opencv2 -L D:/opencv/build/x64/mingw/bin -l libopencv_world453 && $dir$fileNameWithoutExt",
        "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "php": "php",
        "python": "python -u",
        "perl": "perl",
        "perl6": "perl6",
        "ruby": "ruby",
        "go": "go run",
        "lua": "lua",
        "groovy": "groovy",
        "powershell": "powershell -ExecutionPolicy ByPass -File",
        "bat": "cmd /c",
        "shellscript": "bash",
        "fsharp": "fsi",
        "csharp": "scriptcs",
        "vbscript": "cscript //Nologo",
        "typescript": "ts-node",
        "coffeescript": "coffee",
        "scala": "scala",
        "swift": "swift",
        "julia": "julia",
        "crystal": "crystal",
        "ocaml": "ocaml",
        "r": "Rscript",
        "applescript": "osascript",
        "clojure": "lein exec",
        "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
        "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
        "racket": "racket",
        "scheme": "csi -script",
        "ahk": "autohotkey",
        "autoit": "autoit3",
        "dart": "dart",
        "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
        "haskell": "runhaskell",
        "nim": "nim compile --verbosity:0 --hints:off --run",
        "lisp": "sbcl --script",
        "kit": "kitc --run",
        "v": "v run",
        "sass": "sass --style expanded",
        "scss": "scss --style expanded",
        "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
        "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "sml": "cd $dir && sml $fileName"
    }
}

 6.3终端窗口交互输入cin

找到VS code 界面左下角“齿轮”图标,"设置"选项,输入run in terminal ,勾选Whether to run code in Integrated Terminal.勾选后再次运行代码,在下方“终端”工作区进行交互输入输出即可。

  • 9
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
很高兴为您解答这个问题!您可以按照以下步骤完成vscode配置opencv: 1.首先下载并安装opencv,并将其添加到系统环境变量中; 2.打开vscode,新建一个cpp文件; 3.按下F1,然后输入“选择用户界面”,并选择“配置”; 4.在弹出的搜索栏中输入“c_cpp_properties.json”,并双击打开该文件; 5.在该文件中添加以下代码: ``` { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "C:/opencv/build/include/**" ], "defines": [], "intelliSenseMode": "msvc-x64", "compilerPath": "C:/MinGW/bin/g++.exe", "cStandard": "c11", "cppStandard": "c++17" } ], "version": 4 } ``` 注意:这里的“C:/opencv/build/include”应该替换成你自己的opencv安装路径; 6.保存并关闭该文件; 7.按下F1,然后输入“选择用户界面”,并选择“任务”; 8.在弹出的搜索栏中输入“tasks.json”,并双击打开该文件; 9.在该文件中添加以下代码: ``` { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "g++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe", "-IC:/opencv/build/include", "-LC:/opencv/build/x64/mingw/lib", "-lopencv_world410" ], "problemMatcher": { "owner": "cpp", "fileLocation": [ "relative", "${workspaceFolder}" ], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] } ``` 同样需要注意更改“C:/opencv/build/include”和“C:/opencv/build/x64/mingw/lib”为你自己的安装路径; 10.保存并关闭该文件; 11.打开你的cpp文件,按下Ctrl + Shift + B,选择“build”任务,然后按下回车即可编译并运行你的程序了。 希望这能帮到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scott198512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值