环境
- widnows 10
- clion 2022.1.1
- mingw 8.1.0
- opencv 4.5.5
简介
Visual Studio 2019配置OpenCV开发环境 介绍了在 Visual Studio
集成开发环境中如何使用 OpenCV
,本文使用另一个也是很受程序员欢迎的集成开发环境 CLion
,看看在 CLion
中是怎么使用 OpenCV
的。
这里再啰嗦一句,很多初学者很容易搞混,集成开发环境也就是 IDE
,它和编译器的区别。
编译器是一整套工具,它负责将高级编程语言编写成的源码程序编译成计算机识别并可运行的二进制文件,跟写代码用的工具没有任何关系。比如 gcc
,它就是编译器。
IDE
是提供程序开发环境的应用程序,一般包括了代码编辑器、编译器、调试器和图形用户界面工具,它基本上涵盖了软件代码编写需要的所有工具。比如 visual studio
、CLion
就是 IDE
,在 IDE
中一般都可以自己选择所要使用的编译器。
CLion
来到 jetbrains
官方下载页面
https://www.jetbrains.com/clion/download/#section=windows,下载 exe
安装文件后,傻瓜式安装
MinGW
MinGW
是本文中我们要用到的编译器,它集成了 gcc
,首先来到官方的下载页面
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/
这里选择目前最新的版本 8.1.0
下载完成后,解压,然后将其中的 bin
目录加入到系统环境变量中
然后,新开一个命令行,输入命令 gcc -v
来验证一下
命令有输出,且版本号与安装的版本一致,说明安装成功
cmake
同样也是来到官网,https://cmake.org/download/,下载后,傻瓜式安装,然后,将其也加入到系统环境变量中
opencv
来到官网 https://opencv.org/releases/,下载 windows
对应的版本,现在最新的版本是 4.5.5
下载完成后解压
opencv
默认只提供了 msvc
编译的版本,在 build
目录下,源码文件在 sources
。因此接下来,我们需要使用 mingw
来编译 opencv
,首先在 opencv
的解压目录下新建一个文件夹 mingw_build
,用来存放编译生成的文件
然后打开 cmake-gui.exe
,在 Where is the source code:
选择 opencv
下的 sources
文件夹,而 Where to build the binaries:
选择前面创建好的 mingw_build
文件夹
然后点击 Configure
,在 Specify the generator for this project
中选择 MinGW Makefiles
Configure
完成后,再点击 Generate
Generate
完成后,我们进入到 mingw_build
文件夹,打开终端工具,执行命令 mingw32-make.exe
开始编译
然后执行安装,mingw32-make.exe install
可以看到,相关的文件都被拷贝到了 mingw_build\install
目录下,然后将目录 mingw_build\install\x64\mingw\bin
加入到系统环境变量中
整体环境测试
打开 clion
,新建一个项目
进入到 File
–> Settings
–> Build, Execution, Deployment
–> Toolchains
,在 Toolset
中,选择前面我们安装的 mingw
版本
默认情况下,clion
中只能使用 Debug
模式下运行程序,因此,我们来增加 Release
模式,这一步非必需。
进入到 File
–> Settings
–> Build, Execution, Deployment
–> CMake
设置完成后,程序运行时就可以选择是 Debug
还是 Release
了
接下来,修改下 CMakeLists.txt
,内容如下
cmake_minimum_required(VERSION 3.21)
project(OpenCVDemo)
set(CMAKE_CXX_STANDARD 11)
set(OpenCV_DIR "C:\\Users\\xgx\\Downloads\\Programs\\opencv\\mingw_build\\install")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(OpenCVDemo main.cpp)
target_link_libraries(OpenCVDemo ${OpenCV_LIBS})
然后修改源码文件 main.cpp
,写一段简单的读取图片并显示的程序,内容如下
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
Mat srcImage = imread("D:\\CLionProjects\\OpenCVDemo\\Lenna.jpg");
if (!srcImage.data) {
std::cout << "Image not loaded";
return -1;
}
imshow("image", srcImage);
waitKey(0);
return 0;
}
编译成功后,会在目录 cmake-build-release-mingw
生成可执行文件 OpenCVDemo.exe
,我们将测试图片文件 Lenna.jpg
也拷贝到这里,然后执行
这里直接报错了,解决方法是找到 mingw
解压目录下的库文件 libstdc++-6.dll
将其拷贝到 C:\Windows\System32
下
最后,再次执行可执行程序,就可以得到结果了
到这里,整个过程就结束了。