一、安装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位置及动态库位置,如下
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 内容如下文章来源:https://www.toymoban.com/news/detail-793341.html
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})
测试案例文章来源地址https://www.toymoban.com/news/detail-793341.html
#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;
}
到了这里,关于Windows下环境配置Cmake、MinGW、OpenCV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!