前言
网上的教程实在太坑,啰哩啰嗦还不对,很多感觉都是互相抄袭,也没有真正解决问题,抑或解决问题分享时草草了事,真是坑人!不多说了,还是正题吧...
环境
Cmake3.6(至少3.9版本一下)+Mingw-w64(64位的,32位的bug会出很多错)
需下载资源
手动下载一个opencv_ ffmpeg_64.dll文件,放到opencv/sources/3rdparty/ffmpeg/目录下,下载地址:opencv3.2 opencv_ffmpeg_64。
如果是需要opencv_ ffmpeg.dll,也需要放到opencv/sources/3rdparty/ffmpeg/目录下,下载地址:opencv_ ffmpeg.dll。
建议都直接下载好放进去,省着出错麻烦!!!
编译Opencv源码步骤
1. 安装Opencv3.2,Cmake以及Mingw-w64, 配置Mingw-w64的bin目录环境变量;
2. 打开Cmake-GUI,源码路径选择Opencv的source目录,输入路径自定义,如图;
3. 点击Configure,选择MinGW Makefiles;
4. 再次点击Configure,等待一会会很多报红,如图;再次点击Configure,红色全部消失;此时点击Generate完成即可;
5. 进入输出目录,如果安装了git的话,可以直接git-bash里(或者cmd)里运行下面代码,效果如下:
mingw32-make -j8 # 以8线程进行编译
6. 等待一会,即可完成,最终效果如下:
7. 最后在我们编译完成,输出目录下的bin目录里会生成一些.dll和.exe文件,lib目录会生成一些.a文件。
8. 运行mingw32-make install,等待片刻,输出目录下会多出install文件夹;
9. 添加...\install\x86\mingw\bin 添加到path系统环境变量环境变量;
Clion中使用Opencv
1. 安装Clion,配置好Mingw-w64的目录(包括Cmake,可选);
2. 新建项目,发现Cmake3.9一创建项目就报错,所以上一步还是不要选择Bundle的,我自己又下载了一个3.6版本的,心累...
3. 编辑CMakeLists.txt;
cmake_minimum_required(VERSION 3.6)
project(opencvtest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
# Where to find CMake modules and OpenCV
set(OpenCV_DIR "E:\\Opencv3.2\\opencv\\mingw64_build\\install")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(opencvtest main.cpp)
# add libs you need
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
# linking
target_link_libraries(opencvtest ${OpenCV_LIBS})
4. 测试代码main.cpp
#include "iostream"
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
Mat img = imread("haha.jpg");
if (img.empty()) {
cout << "Error" << endl;
return -1;
}
imshow("Lena", img);
waitKey();
return 0;
}
5. 结果:
6. 中间坑真的感觉数不清,配置出现差错可以休息一下,重启一下电脑,说不定就好了:)
参考文章
很多都是大坑,这里就列两个主要的吧!