Win下使用VScode+CMake编译OpenCV(Mingw)

本文详细介绍了如何使用VScode与CMakeLists结合mingw32编译器来编译OpenCV,适用于希望避免使用庞大的Visual Studio环境的学习者。文章提供了从安装必备软件到配置环境变量的完整步骤,以及VScode中CMakeLists.txt和launch.json文件的具体设置,帮助读者实现OpenCV的高效编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用VScode+CMakeLists编译OpenCV
因为要学习OpenCV,但是Visual Studio太过庞大,写个Hello World的程序有种杀鸡用牛刀的感觉,因此决定使用VScode与CMakeLists的组合编译学习OpenCV。

前提准备:

OpenCV源代码 mingw32编译器 Cmake程序

1. Mingw32编译器的安装详见

MinGW下载
我安装的版本是: 我忘记了自己当时的安装方法,自行安装。
我的mingw版本

2. Cmake程序:

Cmake下载 下载并安装,然后启动cmake-gui程序。
在这里插入图片描述
在这里插入图片描述
PS:下载这个后缀为.msi的程序,然后直接安装并添加到PATH中(里面有这个选项)。
(我当时这个GUI界面显示在运行,但是不能显示界面。卸载重装多次后也无效,最后才发现是窗口出了问题,即:
在这里插入图片描述

3. OpenCV源代码

OpenCV
版本自行选择。
在这里插入图片描述
在这里插入图片描述

编译过程

在Cmake界面中“Where is the source code”选择下载后的OpenCV文件夹。同时在OpenCV文件夹下新建build子文件夹,并将Cmake张的“Where to build the binaries”指向改文件夹。
在这里插入图片描述
在这里插入图片描述
点击Configure后选择“MinGW Makefiles”->Use default native compilers (建立在正确安装MinGW的基础之上)。
漫长的等待过程后,选择相应的组件然后在Configure。如果没有之间Generate,等待完成。
Configure Done Generate Done
在这里插入图片描述

编译mingw32

在上述的build文件夹下,进入cmd命令行(在地址栏输入cmd);如果电脑中安装有git bash,也可以右键git bash here。
在这里插入图片描述
使用命令mingw32-make 进行编译(不建议使用mingw32-make -j4等多线程,因为错误不明确,可能还得再来一遍)。如果出现错误,可以上网查找相关问题,比如某些包用不到,但是却编译错误,可以重复上文中cmake过程,取消选择相应的包,然后重新configure和generate,再mingw32-make。
(我已经安装完成,这里就没有截图表示了)
如果成功且未报错,则可以使用,mingw32-make install ,这样在install文件夹中就可以看到头文件和库文件了。
(框选出来的cmake文件就是我们要在Cmake中指定的文件)
在这里插入图片描述

  1. 最后设置环境变量,为系统环境变量Path添加这个目录下的x64/mingw/bin文件,即:
    在这里插入图片描述
    2. 添加OpenCV_DIR变量,即上文的两个Cmake的所在位置(也有文章是使用上文的build文件夹,请自行测试)。
    在这里插入图片描述

VScode调用
简单的使用一个OpenCV显示图像的程序,使用VScode中的Cmake插件进行编译,其中程序及CMakelists为:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

#include "opencv2/opencv.hpp"
using namespace cv;

int main(int argc, const char** argv)
{
   Mat color = imread("D:/2.jpg");
   if(! color.data)
   {
      cout<<"Could not open or find the image"<<endl;
      return -1;
   }
   imshow("Color Image",color);
   waitKey();
   return 0;
}

CMakeLists.txt
其中set(OpenCV_DIR D:/opencv/opencv-3.4.6/build/install/) 就是指向那 “编译mingw32”那两个cmake文件:OpenCVConfig.cmake与OpenCVConfig-version.cmake

cmake_minimum_required(VERSION 3.0)
project(detect)
set(CMAKE_CXX_STANDARD 11)
set(OpenCV_DIR D:/opencv/opencv-3.4.6/build/install/)
find_package(OpenCV REQUIRED)
add_executable(${PROJECT_NAME} "main.cpp")
include_directories(${OpenCV_INCLUDE_DIRS})

target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})

launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++",
            "type": "cppdbg",
            "request": "launch",
            "program": "D:/C++Program/VsCodeForOpenCV/build/detect.exe", // 请指向自己cmake后生成的文件,这里我为了方便唯有改变
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-po
            six-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe", // 这里需要改成自己的mingw地址
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            //"preLaunchTask": "Build"
        }
    ]
}

运行成功:
在这里插入图片描述

使用CMakeLists+VScode的组合折腾了好久,在Win下多数教程是使用VS进行编译,找的很辛苦。整理一下,防止遗忘。才疏学浅如有错误请指出,共同进步~~
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值