0.安装mingw64
官网链接:mingw
- 安装红框标记下载免安装版本,解压可用。
- 将解压后的mingw64\bin添加到path环境变量
- cmd中输入gcc -v,出现下图所示即配置成功
1.下载OpenCV源码
源码下载
官网:Releases - OpenCV
运行下载好的exe文件,指定一下源码的存放路径
下载好的源码如下图所示
扩展文件下载
下载官网:Tags · opencv/opencv_contrib (github.com)
下载后解压放到OpenCV路径下
2.安装CMAKE
已经编译好的OpenCV源码:https://pan.baidu.com/s/1NF5PElfjJT49pnpqgQy3zg?pwd=ksz0
如果使用我编译好的,直接跳到4.5,去配置环境变量,然后进入clion进行测试
使用的是mingw-build文件夹,可以删除除VS-build文件夹
VS-build文件夹是使用VS进行build的,那个如果不使用可以删掉(VS-build),vsbuild的文件有十几个G
官网:Download | CMake
运行安装文件,中间需要勾选添加环境变量
更改安装路径
3.ckame编译OpenCV
- 在OpenCV源码路径下新建一个 mingw-build文件夹
- 将build/bin目录下opencv_videoio_ffmpeg470_64.dll文件拷贝至sources/3rdparty/ffmpeg目录下
- 打卡cmake,如下图所示,选择文件路径
- 点击configure,在弹出的窗口中选择Mingw Makefile,编译器默认的就行
- 当第一次编译完后,出现红色背景的内容,勾选下图所示内容,然后继续点击configure
- 多次点击configure,直到没有红色出现
中间可能在下载时会报错
FFMPEG: Download failed: 28;“Timeout was reached”
解决方式:
将下载链接复制下来,输入到浏览器中进行下载
打开opencv的source文件夹下的.cache文件夹中
复制没下载成功的文件的名,将在网页下载成功的文件重命名为刚才复制对的名
将重命名后的文件放到.cache文件夹下的各个文件夹中,将原始文件进行替换【确实文件放置位置的方法:下载链接中有对应的文件夹名】
重新点击configure
- 点击generator
4.安装编译文件
- 进入mingw-build文件夹
- 在路径上输入cmd,然后回车(建议直接以管理员身份运行,普通方式运行可能会出现一些报错)
- 输入
mingw32-make -j 16
报错解决:
- 如果出现
error: 'recursive_mutex' in namespace 'std' does not name a type
,则重新下载posix版的mingw64 ,然后再在cmake中重新编译OpenCV源码- 如果出现
undefined reference to _Unwind_Resume'
之类的,以管理员身份运行cmd,重新编译
- 出现之类
Anaconda3-/hdf5
的报错,不使用Anaconda3的Python环境更换其他Python环境或者直接不使用Python环境(直接在path环境变中先删除Anaconda的Python配置,更换为其他的Python或者不配置Python),重新用cmake进行编译,然后再在cmd运行
- 输入
mingw32-make install
- 添加环境变量,将mingw-build\bin目录添加到系统环境变量
5.Clion配置使用
- 新建一个项目
- 将下面的内容复制到
CMakeLists.txt
中
set(OpenCV_DIR E:/kaifa/C/opencv/mingw-build/install) #这里刚才编译的OpenCV的路径
find_package(OpenCV REQUIRED)
target_link_libraries(OpenCVtest ${OpenCV_LIBS}) #OpenCVtest是你的项目名称
- 运行main.cpp文件
#include "iostream"
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
Mat img = imread("E:/C-Project/OpenCVtest/1.jpg");
cout << img.type() << endl;
if (img.empty()) {
cout << "Error" << endl;
return -1;
}
imshow("Lena", img);
waitKey();
return 0;
}
- 弹出图片则表示环境配置成功