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的发行版源码。( 为良好兼容性,不建议最新版本 ) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c2d7a265c0b94a6089254c06c182523e.jpeg) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7835a99ae4e04cfd9da3cfc4dba254b0.jpeg) 下载得到压缩包并解压。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/859cbdc2f4f449afb224f9c80f21d123.png) 这里注意: 由于待会使用CMAKE GUI 进行补充下载文件和编译时,**目录是不能变动的** 。**这里建议将解压后的源代码粘贴到自定义路径专门放置** 。 这里我自己创建了如下路径的文件夹 D:/ OpenCVSource / 将opencv-4.10.0复制到这个目录下,如下两张图: ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/63883b99e15844489d06d29277f15f5f.png) D:/ OpenCVSource / opencv-4.10.0 / (记好这个路径 待会要考) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/96d7182448874e769debd5c9a1eb88f6.png) ### 1.2 准备另一个文件夹存放编译文件 新建路径 D:/ OpenCVSource / build / (记好这个路径 待会也要考) 创建好如下图: ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b209e6f444ee4ab6afb2f5102f4026ce.png) 这里build文件夹用于存放编译文件。 ### 1.3 安装CMake ## 2. 使用CMake GUI生成适合MinGW的源文件 ### 2.1 启动CMAKE-GUI 从开始菜单或桌面快捷方式启动cmake-gui ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b08e553e753c40b18a288fdacb18da55.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f83a26a350ae411ba4dc271bc713c555.png) ### 2.2 设置上述两个路径 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b6b4a074ceb24459a2a0c69717b61d8c.png) ### 2.3 设置编译器类型 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5b6dedee56ef450f825fdb73c583e680.jpeg) 这里指定MinGW的C和C++编译器路径: ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5b7b5e47100f443faaa0014cc26ea818.png) 等待configing 约5分钟 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7f7209d06f4842eaaaddb196e96a13b0.png) ### 2.4 下载编译文件 红色表示缺失的构建文件。 这里建议有条件的挂梯子,否则下载很慢,可能导致下载失败。 继续点击configure,下载这些文件。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/14e0402e9b6f460a8ea2578293dea529.jpeg) 下载完毕: ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/eaf078cd2ecc48fc8fef5948eff41e10.png) ### 2.5 构建 点击"generate"生成构建MakeFiles文件。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f097b1921e0645b6a6cd201a44aca2ec.jpeg) 生成很快 大概10s . ### 2.6 编译 进入构建目录 D:/ OpenCVSource / build / 并启动终端。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c24194f5bda6486d9b37065caf715999.png) 输入: ```bash mingw32-make -j4 ``` 回车。 这里-j4表示以4线程编译,如果CPU线程更多,可以用 -j8 或 -j16 。 等待编译完毕,大约10\~20分钟。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/db3b0f522e7a44a281fde5179361357d.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7c328eb1e1bb4aa3a3c0d20cbb90119d.png) ### 2.7 安装 继续在build文件夹运行下述命令 ```bash mingw32-make install -j4 ``` 然后会在D:/OpenCVSource / build / 下生成install文件夹。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0727cef4a7854eed83a3d209db14efca.png) **此时install文件夹就可以直接复制出来使用了** 。 这里我将install复制到一个自定义的新目录 D:/opencvcpp / ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2ce491dd00264b0a83c1c823d47aafc4.png) ## 3.测试 ### 3.1 配置CMakeLists.txt + 添加动态库的环境变量 配置Cmakelists的找包部分和Linux是一样,如下: ```bash 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文件如下 ```cpp #include #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吧。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8c60cd1ab75f4d1093010bdec8c95c7d.png) \*\*\***说明:** 如果VSCode成功配置CMakeLits.txt,没有任何报错但是运行opencv函数时,可执行文件不运行; 请到实际可执行文件目录下双击.exe运行。如果提示缺少.dll文件,说明是动态链接库找不到,请将上述包含bin文件的目录添加到环境变量。

相关推荐
ZhengEnCi几秒前
CMD 与 Python 完全区别指南-小白必看的编程入门解惑宝典
windows·python
cookies_s_s1 小时前
LRU Cache 最近最少使用
c++
郝学胜-神的一滴1 小时前
深入解析Linux下的`lseek`函数:文件定位与操作的艺术
linux·运维·服务器·开发语言·c++·软件工程
仰泳的熊猫2 小时前
LeetCode:889. 根据前序和后序遍历构造二叉树
数据结构·c++·算法
华阙之梦2 小时前
【在 Windows 上运行 Apache Hadoop 或 Spark/GeoTrellis 涉及 HDFS 】
hadoop·windows·apache
心无旁骛~2 小时前
PIL与OpenCV图像读取的颜色格式陷阱:RGB vs BGR
人工智能·opencv·计算机视觉
小欣加油2 小时前
leetcode 329 矩阵中的最长递增路径
c++·算法·leetcode·矩阵·深度优先·剪枝
_给我学起来3 小时前
字符数组和字符串
c++
电手3 小时前
微软宣布删除“另存为”选项,今后文件将默认保存到云盘
windows·microsoft·电脑·onedrive·windows11·windows10
骁的小小站3 小时前
Learn C the Hardway学习笔记和拓展知识(一)
c语言·开发语言·c++·经验分享·笔记·学习·bash