Windows下环境配置Cmake、MinGW、OpenCV

一、安装Cmake
1.选择自己需要下载的版本,下载地址
如cmake-3.26.5-windows-x86_64.msi
2.点击安装,过程中选择为所有用户添加CMAKE PATH
3.安装完成后,编辑账户环境变量
完成后打开cmd终端输入 cmake --version
会输出cmake版本信息,如下图,表示Cmake配置成功
在这里插入图片描述

二、安装MinGW
1.点此下载MinGW在线安装器,选择Assets下的mingwInstaller.exe
在这里插入图片描述

2.安装过程中:

选择需要的gcc版本(如12.2);
根据操作系统位数选择软件架构(如win10 64位);
选择线程模型,我开始选了win32,但是发现std::thread和std::mutex不能使用,查了相关介绍是如果运行在其他系统(如 Linux,Unix,Mac OS等)就选posix,这里为了能正常使用线程和锁,线程模型选择了posix;
选择构建版本有rev0、rev1、rev2,这里使用的默认选择rev2;
选择运行时库类型(查阅资料介绍urct是Microsoft为了更好地支持Windows 10和Windows Store应用程序而开发的新一代C运行时库,相比于msvcrt,urct提供了更多的功能和更好的兼容性。但对于旧的32位Windows系统,MSVCRT仍然是必需的),这里选择的urct;
选择安装位置(如“D:\MinGW”);进行安装。

参考文章地址

3.安装完成后添加系统环境变量,如下所示
在这里插入图片描述

4.打开cmd命令行

$ g++ --version             // 输出以下内容                                                                              
g++ (x86_64-win32-seh-rev2, Built by MinGW-W64 project) 12.2.0                                                          
Copyright (C) 2022 Free Software Foundation, Inc.                                                                       
This is free software; see the source for copying conditions.  There is NO           
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

$ gcc --version                                                                                        
 gcc (x86_64-win32-seh-rev2, Built by MinGW-W64 project) 12.2.0                                                         
 Copyright (C) 2022 Free Software Foundation, Inc.                                                                       
 This is free software; see the source for copying conditions.  There is NO                                             
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

三、安装OpenCV
1、OpenCv下载地址
看到许多方法选择下载Windows版本的安装包,开始下载的是4.8.0版本,该安装包安装过程看起来就是选择指定位置解压,大多数介绍方法使用的是安装后的build文件夹下的库文件,但个人使用过程中编译时总是提示未定义的引用,而且CMakeLists中也已经链接了opencv_world480d.lib

在这里插入图片描述
在这里插入图片描述


然后就尝试使用CMake自行编译OpenCV,源码路径如下,打开前面安装的CMake

注意这里使用OpenCV4.8.0的编译有报错,最后选择下载的4.5.5 Sources源码包

在这里插入图片描述

源码位置及自选后面编译使用的目录,选择Configure,项目生成器下拉选择MinGW Makefiles,及使用默认的本机编译器
在这里插入图片描述
点击Finish,等待完成后结果如下
在这里插入图片描述

在Search中检索如下配置
(1)CMAKE_BUILD_TYPE ,确认Value为Release
(2)BUILD_opencv_world,将其勾选,仅生成一个库连接
(3)BUILD_TESTS,取消勾选以减少编译错误
(4)OPENCV_GENERATE_PKGCONFIG,勾选使得pkgconfig自动传递库路径给g++进行编译
(5)BUILD_opencv_python ,这里没有使用也没安装python,将两个选项都取消勾选
(6)BUILD_JAVA,相关的两项也取消勾选

再次点击Configure,完成后点击Generate。然后打开上面选择生成二进制文件的位置(D:/OpenCV4.8/build_cmake),在文件夹内shift+鼠标右键选择打开PowerShell

$ mingw32-make -j8          //j后参数为cpu内核数量
// 编译完成后进行安装
$  mingw32-make install
在使用4.8版本的Windows包下的sources源码编译时会报一些MinGW相关错误以及
D:\OpenCV4.8\opencv\sources\modules\videoio\src\cap_obsensor\obsensor_stream_channel_msmf.hpp:106:27: error: 
could not convert template argument 'cv::obsensor::ComPtr<IMFSourceReader>::__T_IID_getter' from 'const IID& (cv::obsensor::ComPtr<IMFSourceReader>::)()' {aka 'const GUID& (cv::obsensor::ComPtr<IMFSourceReader>::)()'} to 'const IID& (*)()' {aka 'const GUID& (*)()'} 

不确定是不是MinGW和OpenCV版本之间的问题导致的,
然后就下载了OpenCV4.5.5版本的Sources源码包进行编译(未尝试编译4.8.0版本的源码包,不确定会不会报错)

在这里插入图片描述
在这里插入图片描述

按照前面配置,能够编译成功

环境变量添加OpenCVConfig.cmake位置及动态库位置,如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d3245bf840974db1bd953de79f3ee182.png

1、只添加 D:\OpenCV4.5\build\install  路径
CMakeLists中find_package(OpenCV REQUIRED)  
能够找到OpenCVConfig.cmake文件,然后在OpenCVConfig.cmake文件中会指定opencv的库路径和头文件路径,
从而编译的时候也就找到了相应的头文件和库文件
这样能够编译通过,但在运行的时候会找不到动态库,就什么也不会输出。
编译过程还会输出以下信息,就是提示要添加动态库位置
You might need to add D:/OpenCV4.5/build/install/x64/mingw/bin to your PATH to be able to run your applications.

2、只添加 D:\OpenCV4.5\build\install\x64\mingw\bin 路径
find_package(OpenCV REQUIRED)
会提示如下信息,找不到OpenCVConfig.cmake
Could not find a package configuration file provided by "OpenCV" with any
of the following names:

  OpenCVConfig.cmake
  opencv-config.cmake

Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV"

在find_package(OpenCV REQUIRED)前添加路径也可以,但没有在环境变量里添加方便
set(OpenCV_DIR D:/OpenCV4.5/build/install)
find_package(OpenCV REQUIRED)

CMakeLists.txt 内容如下

cmake_minimum_required(VERSION 3.2.0)
project(opencvtest)

find_package(OpenCV REQUIRED)

add_executable(${PROJECT_NAME} main.cpp)

message("===========${OpenCV_INCLUDE_DIRS}")
message("========${OpenCV_LIBS}")

target_include_directories(${PROJECT_NAME} PRIVATE ${OpenCV_INCLUDE_DIRS})

target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})

测试案例

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
 
int main() {

  auto img = imread("E:/test.jpg",0); // 1:RGB、0:Gray
  imshow("test", img);
  waitKey(2000); // ms
  return 0;
}
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值