当前位置: 首页 > news >正文

windows c++环境 使用VScdoe配置opencv

参考资料

[1] 锦辉. 如何优雅地在你的Vscode上使用C++opencv [DB/OL]https://zhuanlan.zhihu.com/p/402378383. 2022

由于参考资料 [1] 末尾步骤不完整,根据其评论补充了完整配置流程,并在此基础上的一些步骤做了改良。

0.概述

在Linux上配置opencv的c++源码并在VScode运行较为容易,但是在windows环境的配置会麻烦得多。由于opencv没有提供针对vscode在windows环境下的现成库文件,需要我们使用CMAKE GUI 自己编译。

注意: 你使用的MinGW编译器必须是posix-seh-msvcrt 或者posix-seh-ucrt !

我这里使用 x86_64-15.2.0-release-posix-seh-msvcrt 版本的MinGW64编译器。

如果你已经看过参考资料[1]的教程,但是最后没有成功调用opencv库,请直接移步第2.7节。
如果你已经编译并安装好opencv库了,但是使用VScode运行时没有任何输出,请检查动态库.dll文件所在的目录是否添加到环境变量。

1.编译准备

1.1 下载opencv源代码

在 https://opencv.org/releases/ 下载opencv4.10.0的发行版源码。( 为良好兼容性,不建议最新版本 )
在这里插入图片描述
在这里插入图片描述
下载得到压缩包并解压。
在这里插入图片描述
这里注意: 由于待会使用CMAKE GUI 进行补充下载文件和编译时,目录是不能变动的这里建议将解压后的源代码粘贴到自定义路径专门放置
这里我自己创建了如下路径的文件夹
D:/ OpenCVSource /
将opencv-4.10.0复制到这个目录下,如下两张图:
在这里插入图片描述
D:/ OpenCVSource / opencv-4.10.0 / (记好这个路径 待会要考)
在这里插入图片描述

1.2 准备另一个文件夹存放编译文件

新建路径 D:/ OpenCVSource / build / (记好这个路径 待会也要考)
创建好如下图:
在这里插入图片描述
这里build文件夹用于存放编译文件。

1.3 安装CMake

2. 使用CMake GUI生成适合MinGW的源文件

2.1 启动CMAKE-GUI

从开始菜单或桌面快捷方式启动cmake-gui
在这里插入图片描述
在这里插入图片描述

2.2 设置上述两个路径

在这里插入图片描述

2.3 设置编译器类型

在这里插入图片描述
这里指定MinGW的C和C++编译器路径:
在这里插入图片描述
等待configing 约5分钟
在这里插入图片描述

2.4 下载编译文件

红色表示缺失的构建文件。
这里建议有条件的挂梯子,否则下载很慢,可能导致下载失败。
继续点击configure,下载这些文件。
在这里插入图片描述
下载完毕:
在这里插入图片描述

2.5 构建

点击"generate"生成构建MakeFiles文件。
在这里插入图片描述
生成很快 大概10s .

2.6 编译

进入构建目录 D:/ OpenCVSource / build / 并启动终端。
在这里插入图片描述
输入:

mingw32-make -j4

回车。
这里-j4表示以4线程编译,如果CPU线程更多,可以用 -j8 或 -j16 。
等待编译完毕,大约10~20分钟。
在这里插入图片描述
在这里插入图片描述

2.7 安装

继续在build文件夹运行下述命令

mingw32-make install -j4

然后会在D:/OpenCVSource / build / 下生成install文件夹。
在这里插入图片描述

此时install文件夹就可以直接复制出来使用了
这里我将install复制到一个自定义的新目录 D:/opencvcpp /
在这里插入图片描述

3.测试

3.1 配置CMakeLists.txt + 添加动态库的环境变量

配置Cmakelists的找包部分和Linux是一样,如下:

cmake_minimum_required(VERSION 3.16.0)
project(cvtest01 VERSION 0.1.0 LANGUAGES C CXX)
set(CMAKE_C_COMPILER "D:/Engineering_SoftWare_B/VSCode/Setup/x86_64-15.1.0-release-posix-seh-msvcrt-rt_v12-rev0/mingw64/bin/gcc.exe") #指定编译器
set(CMAKE_CXX_COMPILER "D:/Engineering_SoftWare_B/VSCode/Setup/x86_64-15.1.0-release-posix-seh-msvcrt-rt_v12-rev0/mingw64/bin/g++.exe") #指定编译器
set(OpenCV_DIR "D:/opencvcpp/install") #指定opencv包的路径
find_package(OpenCV REQUIRED) #找包
include_directories(${OpenCV_INCLUDE_DIRS}) #添加包头文件路径
add_executable(cvtest01 main.cpp)
target_link_libraries(cvtest01 PRIVATE ${OpenCV_LIBS}) #包的静态库路径

添加 intall 文件夹中的 bin 路径到系统环境变量。
我这里是 D:/ opencvcpp / install / x64 / mingw / bin

3.2 运行程序

我放置了一张图片a.jpg在C++工程目录下,main.cpp文件如下

#include <iostream>
#include "opencv2/opencv.hpp"
int main( ){cv::Mat pica = cv::imread("D:/VScodeWS/opencvcpp_test/a.jpg");std::cout << "Hello OpenCV ! " << std::endl;cv::imshow("a",pica);cv::waitKey(0);cv::destroyAllWindows();return 0;
}

运行结果如下,然后请享用opencv吧。
在这里插入图片描述
***说明:
如果VSCode成功配置CMakeLits.txt,没有任何报错但是运行opencv函数时,可执行文件不运行; 请到实际可执行文件目录下双击.exe运行。如果提示缺少.dll文件,说明是动态链接库找不到,请将上述包含bin文件的目录添加到环境变量。

http://www.dtcms.com/a/390749.html

相关文章:

  • JVM(四)-- 对象的实例化内存布局和直接内存
  • G1垃圾回收器的优势
  • 内存分配策略
  • Python采集Tik Tok视频详情,Tik TokAPI接口(json数据返回)
  • 实时通信技术大比拼:长轮询、短轮询、WebSocket 与 SSE 深度解析及实战指南
  • ICML 2025|图像如何与激光雷达对齐并互补?迈向协调的多模态3D全景分割
  • 基于Web的3D工程应用图形引擎——HOOPS Communicator技术解析
  • 【每日一问】运放的失调电压是什么?对于电路有何影响?
  • 【轨物方案】轨物科技新型储能管理系统:以AIoT技术驱动储能资产全生命周期价值最大化
  • 线性回归 vs 逻辑回归:从原理到实战的全面对比
  • HashMap的底层原理
  • 股指期货超短线如何操作?
  • 【洛谷】算法竞赛中的树结构:形式、存储与遍历全解析
  • 育苗盘补苗路径规划研究
  • API Gateway :API网关组件
  • conda激活虚拟环境
  • 重构大qmt通达信板块预警自动交易系统--读取通达信成分股
  • 25.9.19 Spring AOP
  • d38: PostgreSQL 简单入门与 Vue3 动态路由实现
  • No006:订阅化时间管理——迈向个性化、生态化的AI服务模式
  • 微服务-sentinel的理论与集成springcloud
  • C++学习:哈希表unordered_set/unordered_map的封装
  • 圆柱永磁体磁场及梯度快速计算与可视化程序
  • 种群演化优化算法:原理与Python实现
  • 基于IPDRR模型能力,每个能力的概念及所要具备的能力产品
  • NUST技术漫谈:当非结构化数据遇见状态跟踪——一场静默的技术革命
  • 在技术无人区开路,OPPO的指南针是“人”
  • AI与NPC发展过程及技术
  • Redis数据库(三)—— 深入解析Redis三种高可用架构:主从复制、哨兵与集群模式
  • (leetcode) 力扣100 13最大子序和(动态规划卡达内算法分治法)