热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【VSCode】【OpenCv】Windows平台下VSCode+OpenCv+minGw环境搭建C++

参考链接:VScode搭建Opencv(C++开发环境)1.软件准备

参考链接:VScode搭建Opencv(C++开发环境)



1. 软件准备



  • MinGw:x86_64-posix-seh
    在这里插入图片描述



  • CMake:cmake-3.20.2-windows-x86_64.zip
    在这里插入图片描述



  • OpenCv:opencv-4.5.2-vc14_vc15.exe
    在这里插入图片描述




2. 配置环境变量

将上述下载的MinGw、CMake、OpenCv解压到指定文件夹内,本机测试都放在D:\IDE文件夹内,文件路径如下:



MinGwD:\IDE\MinGw
在这里插入图片描述



CMakeD:\IDE\cmake
在这里插入图片描述



OpenCvD:\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



  1. CMake/bin文件夹下找到cmake-gui.exe,双击打开。
    在这里插入图片描述

  2. 设置第一个路径(Where is the source code)是opencv的源码路径,第二个路径(Where to build the binaries)是生成的文件的路径(手动创建ming文件夹)。
    在这里插入图片描述

  3. 点击Configure,然后选择使用MinGw MakeFiles作为编译器,并选择Specify native compliers,点击next继续,

在这里插入图片描述
在这里插入图片描述
4. CompliersC选择mingw/bin文件夹下的gcc.exe,C++选择mingw/bin文件夹下的g++.exe,然后点击finish继续。
在这里插入图片描述
5. 等完成后可能会有红色的框表示失败了,这时候看一下CMakeDownloadLog.txt文件,应该是有几个文件没有下载下来,可以手动下载,然后把它们放到指定文件夹内并重命名。大概就是这几个文件需要手动下载:opencv_videoio_ffmpeg.dllopencv_videoio_ffmpeg_64.dllade-0.1.1f.zipffmpeg_version.cmake


下载失败解决方案可参考:CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结。
国内访问受限,GitHub Proxy可以下载需要的文件。




  1. 下载完成后再重新点击Configure,等待完成即可。如果完成后仍然还有红色框出现,不要着急,再重新点击Configure即可。

  2. 执行完后,把python相关的都取消勾选,
    WITH_IPPWITH_MSMFENABLE_PRECOMPILED_HEADERS取消勾选;
    BUILD_opencv_worldWITH_OPENGLBUILD_EXAMPLES选择勾选,
    CPU_DISPATCH选空。

  3. 上述操作完成后点击Generate,直到操作完成。
    在这里插入图片描述


4. make

重新打开cmd窗口,进入刚刚生成的mingw文件夹,执行命令:minGW32-make -j 4
没有出错,继续执行命令:minGW32-make install
然后添加环境变量:
在这里插入图片描述


5. VSCode配置并测试



  1. 新建一个文件夹,命名为Hello-opencv

  2. 使用VSCode打开该文件夹;

  3. 在该文件夹下新建一个文件,命名为test.cpp;

  4. 编写如下代码,记得该文件夹下放一个图片;

#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;
}


  1. 点击调试 C/C++文件,选择带g++.exe,会出现提示***存在错误,点击中止即可;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. Hello-opencv文件夹下会手动创建.vscode文件夹,.vscode文件夹下手动创建三个文件:c_cpp_properties.jsonlaunch.jsontasks.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",
// RBin是自定义的文件夹名,会把生成的EXE放在该文件夹下,要手动创建RBin文件夹
// 下面的opencv路径根据自己的路径修改
"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

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "opencv debuge",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\RBin\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false, // true表示运行到main()函数的第一行,可以调试;false表示直接运行,不会再main()函数的第一行停止,除非设置了断点
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,//是否调用外部cmd
"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
}
],

}


  1. 转到test.cpp编辑界面,然后按F5,如果当前路径下(Hello-open)没有图片,则会提示load image fail!;如果路径下有图片,会显示图片。
    这两种情况都表示配置已经完成,以后如果在其它文件夹下开发,可以直接把.vscode文件夹拷过去。
    在这里插入图片描述
    在这里插入图片描述


6. 注意事项

如下是本机测试时出现的问题。



  1. cmake添加了环境变量但是cmd窗口中输入命令提示不是内部或外部命令
    添加环境变量后需要重新打开cmd;

  2. 一定要记得CMake编译时,Configure完成后一定要generate!!!

  3. 选择config的编译器时一定要选对。这个我第一次配置的时候选错了,后面执行 minGW32-make -j 4命令时总是提示Makefile:32: *** missing separator. Stop.,找了好多解决方案都不行,最后重新来一遍才发现。

  4. python等要取消勾选

  5. 如果第二次configure还是有红色的,不要慌,再点击configure,直到没有红色出现。

  6. 第一次configure出现红色的,查看CMakeDownloadLog.txt,下载几个需要的文件;然后把它们放入到对应的路径下。

  7. 运行时要手动创建RBin文件夹。

  8. 以.vscode所在目录(测试的Hello-opencv\)为当前工作路径。

  9. 环境变量中的opencv路径一定要写对

  10. 调用其它文件的函数时,要把头文件和源文件都包含进去。这个是后面写其它代码的时候一个文件要调用另一个文件内的函数,需要把那个函数声明和定义的文件都包含在内。
    如下:
    b.h

void b_b();

b.cpp

void b_b()
{
// 函数实现
}

a.cpp

// a.cpp中要包含函数b_b()的声明和定义的文件
#include "b.h"
#include "b.cpp"
int main()
{
b_b(); // 在b.h中声明的函数
return 0;
}


推荐阅读
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 在 Windows 10 环境中,通过配置 Visual Studio Code (VSCode) 实现基于 Windows Subsystem for Linux (WSL) 的 C++ 开发,并启用智能代码提示功能。具体步骤包括安装 VSCode 及其相关插件,如 CCIntelliSense、TabNine 和 BracketPairColorizer,确保在 WSL 中顺利进行开发工作。此外,还详细介绍了如何在 Windows 10 中启用和配置 WSL,以实现无缝的跨平台开发体验。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本书详细介绍了在最新Linux 4.0内核环境下进行Java与Linux设备驱动开发的全面指南。内容涵盖设备驱动的基本概念、开发环境的搭建、操作系统对设备驱动的影响以及具体开发步骤和技巧。通过丰富的实例和深入的技术解析,帮助读者掌握设备驱动开发的核心技术和最佳实践。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 在本地环境中调试远程服务器上的网站代码执行问题,可以通过以下步骤实现:首先,在本地安装 Visual Studio 并配置远程调试工具。接着,确保服务器和本地机器之间的网络连接畅通,并正确设置防火墙规则以允许调试流量。最后,使用 Visual Studio 的远程调试功能连接到服务器,进行代码调试。这种方法不仅提高了开发效率,还减少了在服务器上直接操作的风险。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 在64位Linux系统上编译GCC时,可能会遇到一个错误,即在构建共享库过程中,`.libs/alloc.o` 文件中的重定位 `R_X86_64_32` 无法应用于 `.rodata.str1.8` 段。这一问题通常与目标文件的地址空间限制有关,需要通过调整编译选项或修改源代码来解决。具体来说,可以尝试使用 `-fPIC` 选项以生成位置无关代码,或者检查相关对象文件的链接方式。 ... [详细]
  • 在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统
    本文详细介绍了在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统的步骤。首先,通过“文件”菜单选择“新建虚拟机”并进入自定义设置。接着,在硬盘兼容性选项中选择默认设置。为了更好地进行Linux操作系统的安装练习,建议选择稍后安装操作系统,并在虚拟机安装完成后,根据实际需求删除不必要的硬件组件。此外,本文还提供了详细的配置参数和注意事项,帮助用户顺利完成整个部署过程。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 在Linux环境下编译安装Heartbeat时,常遇到依赖库缺失的问题。为确保顺利安装,建议预先通过yum安装必要的开发库,如glib2-devel、libtool-ltdl-devel、net-snmp-devel、bzip2-devel和ncurses-devel等。这些库是编译过程中不可或缺的组件,能够有效避免编译错误,确保Heartbeat的稳定运行。 ... [详细]
author-avatar
袁善恩芷恩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有