背景
在大学时是使用Visual Studio 2015、OpenCV、C++来开发的,那时看到OpenCV官方推荐windows 64位系统安装Visual Studio进行开发。现在出来工作实习后,接触比较多的是VSCode,这款软件能占用空间小,能支持主流的操作系统,安装库和配置文件也挺方便的,适合项目开发使用。
目录
前言
选择软件和版本
安装步骤
1、Visual Studio Code 安装、配置
2、openCV 配置
3、安装并配置MinGw
4、安装、配置cmake
5、项目配置
参考链接
前言
VSCode刚安装完成时,只能起文本编辑器的作用,用来写写代码;想要变成能开发OpenCV的IDE,需要我们安装插件、依赖库并手动设置参数。本文中主要目的是实现在windows中,有一个支持C++、OpenCV的开发环境。
选择软件和版本
Visual Studio Code - 1.43.2
openCV - 3.4.9
MinGw - 5.3.0
cmake - 3.9.0
建议大家和这里版本保持一致;免去后面安装失败的惨剧。MinGw较新的版本是需要自己编译的,不能直接运行安装。
大家可以到这里下载软件:https://download.csdn.net/download/qq_41204464/12298617
等下也在网盘放一份,只是这个网盘限速,诶,大家可以衡量选择。
安装步骤
1、Visual Studio Code 安装、配置
下载好VScode后,解压出来有一个可执行文件,执行安装后如下配置:安装 C/C++ 插件(C++ Intellisense 可选)
如果对安装VScode不熟悉的朋友,可以点击参考我这篇博客
下图是配置好中文的VScode,准备安装C/C++ 插件
2、openCV 配置
执行opencv-3.4.9-vc14_vc15.exe 可执行程序,进行安装OpenCV;其实是把相关的文件解压出来,提供我们后面使用。
安装的时候选择好路径就行了,尽量不要放置C盘;比如放置E:\software_install\opencv_3_4
在
3、安装并配置MinGw
执行mingw-w64-install.exe,如下配置
- (版本)Version 选择 5.3.0
- (架构)Architecture 32位cpu 选择 i686,64位cpu 选择 x86_64
- (线程模式)Threads 如果使用 posix api 选择 posix,如果使用 win32 api 选择win32
(异常处理机制) Exception 有三种,根据机器情况进行选择
- SJLJ (setjmp/longjmp) 兼容性好,32位或64位架构都可以使用,但速度慢
- DWARF (DW2, dwarf-2) 速度比SJLJ快,但只能用于32位架构,且有bug,尽量不用
- SEH (zero overhead exception) 速度很快,但只能用于64位架构;(编译版本)Build revision 选择最高的
如果是 win10下的64位系统 建议选择 与图像上一致的选项。
然后配置环境变量 系统的
注意,这里的MinGW的安装路径,根据自己实际安装路径来填写到环境变量。
检查是否配置成功:
能成功看到其版本了。
4、安装、配置cmake
解压好cmake,添加可环境变量
注意,这里的cmake的安装路径,根据自己实际解压后路径来填写到环境变量。
然后在命令窗口执行:cmake-gui.exe
where to build the binaries: 选择
点击
选择 MinGW 中的 C 和 C++ 编译的exe程序
我这边的路径:D:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin ,需要根据自己的mingw安装路径进行选择:
C:x86_64-w64-mingw32-gcc.exe
C++ : x86_64-w64-mingw32-g++.exe
设置完毕点击 Finish,耐心等待进度条读完,直到输出窗口看到 Configuring done。
再次点击 Configure 等待进度条读完。之后点击Generate 等待进度条读完,出现 Generating done。
这时,可以看到
修改OpenCV代码,来防止等下编译失败;注意适合于OpenCV3.4.9版本的;其他的版本不适合;
解决方案:
E:\software_install\opencv_3_4\sources\modules\photo\test\test_hdr.cpp 添加头文件
1 | #include <sys/time.h> |
在命令窗口,使用 cd 命令 切换到 E:\software_install\opencv_3_4\build\x64\MinGW,输入
编译完成之后,输入
最后,配置环境变量 path :
新添:E:\software_install\opencv_3_4\build\x64\MinGW\bin
5、项目配置
新建一个文件夹,用来放先关工程代码的。如:C++_OpenCV_template
在vsCode中打开该目录
新建
1 2 3 4 5 6 7 8 9 10 | #include<opencv2/opencv.hpp> #include<opencv2/highgui.hpp> using namespace cv; int main() { Mat img=imread("sad.jpg"); cv::imshow("image",img); cv::waitKey(); return 0; } |
运行(Ctrl+F5),应该会报错并提示你生成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${fileBasenameNoExtension}.o", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "D:/Program Files/mingw-w64/x86_64-5.3.0-posix-seh-rt_v4-rev0/mingw64/bin/gdb.exe", "preLaunchTask": "g++", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] }, ] } |
在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | { "configurations": [ { "name": "win", "includePath": [ "${workspaceFolder}/**", "E:\\software_install\\opencv_3_4\\build\\include", "E:\\software_install\\opencv_3_4\\build\\include\\opencv", "E:\\software_install\\opencv_3_4\\build\\include\\opencv2" ], "defines": [], "compilerPath": "D:/Program Files/mingw-w64/x86_64-5.3.0-posix-seh-rt_v4-rev0/mingw64/bin/gcc.exe", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "clang-x64" } ], "version": 4 } |
在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "command": "g++", "args": [ "-g", "-std=c++11", "${file}", "-o", "${fileBasenameNoExtension}.o", "-I", "E:\\software_install\\opencv_3_4\\build\\include", "-I", "E:\\software_install\\opencv_3_4\\build\\include\\opencv2", "-I", "E:\\software_install\\opencv_3_4\\build\\include\\opencv", "-L", "E:\\software_install\\opencv_3_4\\build\\x64\\MinGW\\lib", "-l", "opencv_core349", "-l", "opencv_imgproc349", "-l", "opencv_imgcodecs349", "-l", "opencv_video349", "-l", "opencv_ml349", "-l", "opencv_highgui349", "-l", "opencv_objdetect349", "-l", "opencv_flann349", "-l", "opencv_imgcodecs349", "-l", "opencv_photo349", "-l", "opencv_videoio349" ],// 编译命令参数 "problemMatcher":{ "owner": "cpp", "fileLocation":[ "relative", "${workspaceFolder}" ], "pattern":[ { "regexp": "^([^\\\\s].*)\\\\((\\\\d+,\\\\d+)\\\\):\\\\s*(.*)$", "file": 1, "location": 2, "message": 3 } ] }, "group": { "kind": "build", "isDefault": true } } |
注意:如果是使用其他版本的OpenCV,把
比如使用:OpenCV3.4.6;就把349改为346。
如此,就可以按 Ctrl+F5 运行
nice成功了,刚才等待编译,来了一盘拳王,一年多没玩了突然想起好怀念。
换一张图片:
以下代码能打开笔记本摄像头:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <opencv2\opencv.hpp> using namespace cv; using namespace std; int main() { Mat frame; VideoCapture capture(0);//读取视摄像头实时画面数据,0默认是笔记本的摄像头;如果是外接摄像头,这里改为1 while (true) { capture >> frame; //读取当前帧 if(!frame.empty()){ //判断输入的视频帧是否为空的 imshow("window",frame); //在window窗口显示frame摄像头数据画面 } if(waitKey(20) == 'q') //延时20ms,获取用户是否按键的情况,如果按下q,会推出程序 break; } capture.release(); //释放摄像头资源 destroyAllWindows(); //释放全部窗口 return 0; } |
参考链接
将 VSCode 打造成 OpenCV 的 IDE
cmake+opencv+mingw部分error解决
将Sublime Text 3打造成OpenCV3.2的IDE
vscode 配置OpenCVC编译环境
希望对你有帮助。