作者:袁善恩芷恩 | 来源:互联网 | 2023-08-04 22:44
参考链接:VScode搭建Opencv(C++开发环境)
1. 软件准备 2. 配置环境变量 将上述下载的MinGw、CMake、OpenCv解压到指定文件夹内,本机测试都放在D:\IDE
文件夹内,文件路径如下:
MinGw :D:\IDE\MinGw
CMake :D:\IDE\cmake
OpenCv :D:\IDE\opencv452\opencv
在系统环境变量path
中添加MinGw、CMake:
MinGw:D:\IDE\MinGw\bin
; CMake:D:\IDE\cmake\bin
; 检查MinGw、CMake环境是否OK。 打开cmd命令窗口,输入gcc -v
判断MinGw环境,输入cmake -version
判断CMake环境。显示如下表示环境配置成功。 3. 使用CMake编译Opencv 在CMake/bin
文件夹下找到cmake-gui.exe
,双击打开。 设置第一个路径(Where is the source code
)是opencv的源码路径,第二个路径(Where to build the binaries
)是生成的文件的路径(手动创建ming文件夹)。 点击Configure
,然后选择使用MinGw MakeFiles
作为编译器,并选择Specify native compliers
,点击next
继续, 4. Compliers
C选择mingw/bin
文件夹下的gcc.exe
,C++选择mingw/bin
文件夹下的g++.exe
,然后点击finish
继续。 5. 等完成后可能会有红色的框表示失败了,这时候看一下CMakeDownloadLog.txt
文件,应该是有几个文件没有下载下来,可以手动下载,然后把它们放到指定文件夹内并重命名。大概就是这几个文件需要手动下载:opencv_videoio_ffmpeg.dll
、opencv_videoio_ffmpeg_64.dll
、ade-0.1.1f.zip
、ffmpeg_version.cmake
。
下载失败解决方案可参考:CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结。 国内访问受限,GitHub Proxy可以下载需要的文件。
下载完成后再重新点击Configure
,等待完成即可。如果完成后仍然还有红色框出现,不要着急,再重新点击Configure
即可。 执行完后,把python
相关的都取消勾选, WITH_IPP
、WITH_MSMF
、ENABLE_PRECOMPILED_HEADERS
取消勾选; BUILD_opencv_world
、WITH_OPENGL
、BUILD_EXAMPLES
选择勾选, CPU_DISPATCH
选空。 上述操作完成后点击Generate
,直到操作完成。 4. make 重新打开cmd窗口,进入刚刚生成的mingw
文件夹,执行命令:minGW32-make -j 4
。 没有出错,继续执行命令:minGW32-make install
。 然后添加环境变量:
5. VSCode配置并测试 新建一个文件夹,命名为Hello-opencv
使用VSCode打开该文件夹; 在该文件夹下新建一个文件,命名为test.cpp
; 编写如下代码,记得该文件夹下放一个图片; # include # include using namespace cv; using namespace std; int main ( ) { std:: string filename = "1.jpg" ; cv:: Mat srcimg = cv:: imread ( filename. data ( ) ) ; if ( ! srcimg. empty ( ) ) { cv:: namedWindow ( "test" , cv:: WINDOW_NORMAL) ; cv:: imshow ( "test" , srcimg) ; cv:: waitKey ( 0 ) ; } else { printf ( "load image fail!\n" ) ; getc ( stdin ) ; } return 0 ; }
点击调试 C/C++文件
,选择带g++.exe
,会出现提示***存在错误
,点击中止
即可; 在Hello-opencv
文件夹下会手动创建.vscode
文件夹,.vscode
文件夹下手动创建三个文件:c_cpp_properties.json
、launch.json
、tasks.json
,然后按照如下编辑这些json文件。这些字段的具体含义可参考:VSCode Variables Reference。 这三个文件也可以自动生成,这里只展示手动创建的过程。 路径要根据自己电脑设置的路径填写。
c_cpp_properties.json
{ "configurations" : [ { "name" : "win" , "includePath" : [ "${workspaceFolder}/**" , "D:\\IDE\\opencv452\\opencv\\build\\x64\\mingw\\install\\include" , "D:\\IDE\\opencv452\\opencv\\build\\x64\\mingw\\install\\include\\opencv2" ] , "defines" : [ ] , "compilerPath" : "D:\\IDE\\MinGw\\bin\\g++.exe" , "cStandard" : "c11" , "cppStandard" : "c++17" , "intelliSenseMode" : "${default}" } ] , "version" : 4 }
tasks.json
{ "version" : "2.0.0" , "tasks" : [ { "type" : "shell" , "label" : "opencv4.5.2" , "command" : "D:\\IDE\\MinGw\\bin\\g++.exe" , "args" : [ "-g" , "${file}" , "-o" , "${workspaceFolder}\\RBin\\${fileBasenameNoExtension}.exe" , "D:\\IDE\\opencv452\\opencv\\build\\x64\\mingw\\bin\\libopencv_world452.dll" , "-I" , "D:\\IDE\\opencv452\\opencv\\build\\x64\\mingw\\install\\include" , "-I" , "D:\\IDE\\opencv452\\opencv\\build\\x64\\mingw\\install\\include\\opencv2" , ] , "options" : { "cwd" : "D:\\IDE\\MinGw\\bin" } , "problemMatcher" : [ "$gcc" ] , "group" : { "kind" : "build" , "isDefault" : true } } ] }
launch.json
{ "version" : "0.2.0" , "configurations" : [ { "name" : "opencv debuge" , "type" : "cppdbg" , "request" : "launch" , "program" : "${workspaceFolder}\\RBin\\${fileBasenameNoExtension}.exe" , "args" : [ ] , "stopAtEntry" : false , "cwd" : "${workspaceFolder}" , "environment" : [ ] , "externalConsole" : true , "MIMode" : "gdb" , "miDebuggerPath" : "D:\\IDE\\MinGw\\bin\\gdb.exe" , "setupCommands" : [ { "description" : "为 gdb 启用整齐打印" , "text" : "-enable-pretty-printing" , "ignoreFailures" : false } ] , "preLaunchTask" : "opencv4.5.2" , "console" : "integratedTerminal" , "justMyCode" : true } ] , }
转到test.cpp
编辑界面,然后按F5
,如果当前路径下(Hello-open
)没有图片,则会提示load image fail!
;如果路径下有图片,会显示图片。 这两种情况都表示配置已经完成,以后如果在其它文件夹下开发,可以直接把.vscode
文件夹拷过去。 6. 注意事项 如下是本机测试时出现的问题。
cmake添加了环境变量但是cmd窗口中输入命令提示不是内部或外部命令
。 添加环境变量后需要重新打开cmd; 一定要记得CMake编译时,Configure
完成后一定要generate
!!! 选择config的编译器时一定要选对 。这个我第一次配置的时候选错了,后面执行 minGW32-make -j 4
命令时总是提示Makefile:32: *** missing separator. Stop.
,找了好多解决方案都不行,最后重新来一遍才发现。python等要取消勾选 。如果第二次configure还是有红色的,不要慌,再点击configure,直到没有红色出现。 第一次configure出现红色的,查看CMakeDownloadLog.txt
,下载几个需要的文件;然后把它们放入到对应的路径下。 运行时要手动创建RBin
文件夹。 以.vscode所在目录(测试的Hello-opencv\
)为当前工作路径。 环境变量中的opencv路径一定要写对 。调用其它文件的函数时,要把头文件和源文件都包含进去。这个是后面写其它代码的时候一个文件要调用另一个文件内的函数,需要把那个函数声明和定义的文件都包含在内。 如下: b.h
void b_b ( ) ;
b.cpp
void b_b ( ) { }
a.cpp
# include "b.h" # include "b.cpp" int main ( ) { b_b ( ) ; return 0 ; }