admin管理员组文章数量:1648583
背景
在大学时是使用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/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
在 opencv\build\x64
路径下新建一个文件夹(可自起,这里是 MinGW),用来存放等下编译的文件
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位系统 建议选择 与图像上一致的选项。
然后配置环境变量 系统的path
注意,这里的MinGW的安装路径,根据自己实际安装路径来填写到环境变量。
检查是否配置成功:
win键 + R
输入 cmd
打开 命令行窗口
能成功看到其版本了。
4、安装、配置cmake
解压好cmake,添加可环境变量
注意,这里的cmake的安装路径,根据自己实际解压后路径来填写到环境变量。
然后在命令窗口执行:cmake-gui.exe
where is the source code:
选择 E:\software_install\opencv_3_4\sources ,即OpenCV安装的路径下的sources目录
where to build the binaries: 选择
点击 configure
按钮,按照下图所示进行选择
选择 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\build\x64\MinGW
的文件夹下新增了好多东西。
修改OpenCV代码,来防止等下编译失败;注意适合于OpenCV3.4.9版本的;其他的版本不适合;
解决方案:
E:\software_install\opencv_3_4\sources\modules\photo\test\test_hdr.cpp 添加头文件
#include <sys/time.h>
在命令窗口,使用 cd 命令 切换到 E:\software_install\opencv_3_4\build\x64\MinGW,输入 minGW32-make
命令,这个时候大概花费 30 分钟左右的时间来编译,这个具体的时间和根据电脑的性能有关的。
编译完成之后,输入 minGW32-make install
来完成安装。
最后,配置环境变量 path :
新添:E:\software_install\opencv_3_4\build\x64\MinGW\bin
5、项目配置
新建一个文件夹,用来放先关工程代码的。如:C++_OpenCV_template
在vsCode中打开该目录
新建 testOpenCv.cpp
,copy如下代码:
#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),应该会报错并提示你生成 launch.json
文件,copy下面代码复制到 launch.json
中,将 "miDebuggerPath"
改成自己的。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft/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
}
]
},
]
}
在.vscode
文件夹(launch.json
的父目录)下,新建 c_cpp_properties.json
,copy 如下代码,修改includePath
的后三个路径为自己的,compilerPath
同理。
{
"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
}
在.vscode
文件夹(launch.json
的父目录)下,新建 tasks.json
,copy以下代码,修改 “-I” 和 “-L” 的路径。
{
// See https://go.microsoft/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,把tasks.json
中的349改为相应版本号;
比如使用:OpenCV3.4.6;就把349改为346。
如此,就可以按 Ctrl+F5 运行 testOpenCv.cpp
,展示一张你选择的图片。刚才截了个拳王的图:
nice成功了,刚才等待编译,来了一盘拳王,一年多没玩了突然想起好怀念。
换一张图片:
以下代码能打开笔记本摄像头:
#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编译环境
希望对你有帮助。
版权声明:本文标题:windows系统【VSCode搭建OpenCV、C++开发环境】 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729501822a1203293.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论