1-4的资源来这里找:https://pan.baidu.com/s/1sqWsyG1r1BDjwfaq75pSKQ
提取码:6j99
这一步可以采用MinGW安装包在线安装,但大概率因为网络问题安装失败,有条件的同学可以自行尝试,这里我推荐使用Dev-C++自带的MinGW环境。
双击安装程序,傻瓜式安装Dev-C++,将目录下的MinGW64\bin文件添加到系统环境变量中。
验证环境变量是否添加成功,可以打开CMD,输入gcc -v,有如下输出代表环境变量配置正确。
cmake压缩包解压后在bin文件中找到执行程序
双击打开,可以看到如下界面
①. opencv安装包解压目录
②. 新建文件夹命名为mingw-build用于存放编译的中间产物
③. 上面的两个步骤都配置完之后,点击configure,选择MinGW编译环境,开始配置。
下面的步骤非常关键
因为网络问题,configure过程中会有下面几个包下载失败
修改配置文件
来到解压路径\opencv\sources\3rdparty\ffmpeg你可以看到下面几个文件:
打开标红的ffmpeg.cmake,删除有关下载的内容,剩下的部分是这样的
# Binaries branch name: ffmpeg/master_20190616
# Binaries were created for OpenCV: 7b099e0fe2d929e55d6705b6ad510c2c9081606b
ocv_update(FFMPEG_BINARIES_COMMIT "998718df34e35ea0fa429724875fc3900faa266f")
ocv_update(FFMPEG_FILE_HASH_BIN32 "f03b47fb809edd2e06b6db135cbd3e49")
ocv_update(FFMPEG_FILE_HASH_BIN64 "5c4571459570c288d874704244c428b5")
ocv_update(FFMPEG_FILE_HASH_CMAKE "f710891525a04586d565d0e700e62a9c")
function(download_win_ffmpeg script_var)
set(${script_var} "" PARENT_SCOPE)
set(ids BIN32 BIN64 CMAKE)
set(name_BIN32 "opencv_videoio_ffmpeg.dll")
set(name_BIN64 "opencv_videoio_ffmpeg_64.dll")
set(name_CMAKE "ffmpeg_version.cmake")
set(FFMPEG_DOWNLOAD_DIR "${OpenCV_BINARY_DIR}/3rdparty/ffmpeg")
set(status TRUE)
if(status)
set(${script_var} "${FFMPEG_DOWNLOAD_DIR}/ffmpeg_version.cmake" PARENT_SCOPE)
endif()
endfunction()
if(OPENCV_INSTALL_FFMPEG_DOWNLOAD_SCRIPT)
configure_file("${CMAKE_CURRENT_LIST_DIR}/ffmpeg-download.ps1.in" "${CMAKE_BINARY_DIR}/win-install/ffmpeg-download.ps1" @ONLY)
install(FILES "${CMAKE_BINARY_DIR}/win-install/ffmpeg-download.ps1" DESTINATION "." COMPONENT libs)
endif()
ocv_install_3rdparty_licenses(ffmpeg license.txt readme.txt)
将提前下载好的三个文件直接放到opencv\sources\3rdparty\ffmpeg目录下,再次点击configure就不会报错了(如果还是报错请接着往下看),configure完成后,点击generate生成makefile,
在进行下一步之前,你需要检查下面的目录:
解压路径\opencv\mingw-build\3rdparty\ffmpeg
如果路径不存在,就从opencv\sources\3rdparty\ffmpeg复制一份到这里(configure报错多半是找不到路径)。
如果configure和generate的过程都顺利结束了,我们接着进行下一步。
打开Git,输入gcc-v,我们应该得到和cmd内容相同的输出。
不要使用cmd窗口编译。会出现’chmod’ 不是内部或外部命令,也不是可运行的程序等类似这样的报错,chmod是linux的专有命令。
输入命令
mingw32-make
开始编译,单核编译,比较慢。
通过错误的提示我们可以知道mingw-build/dnn中找不到test_common.hpp文件,我们可以从
解压目录\opencv\sources\modules\dnn\test
中复制一份到对应目录下
找不到文件
opencv/mingw-build/3rdparty/ffmpeg/opencv_videoio_ffmpeg_64.dll
同样是这个系列的第三方库,复制一份到对应目录下。所以最终这个文件夹下的内容有这么一堆:
我这边再编译就顺利完成了。
上面的步骤完成后,继续在Git界面中输入如下命令
mingw32-make install
执行完毕后会生成这样一个文件夹
将bin文件中的内容添加到系统路径
打开CMD,输入opencv_version,查看版本信息
Clion提供免费的学生版本可以官网自行申请
Clion工具链我同样使用Dev-C++的MinGW,中间的一行警告应该是非法字符造成的,实际不影响使用。
新建工程C-Test
设置CMakeList.txt
cmake_minimum_required(VERSION 3.15)
project(C_Test)
set(CMAKE_CXX_STANDARD 14)
# 可以将下面的路径单独添加到环境变量OpenCV_DIR
set(OpenCV_DIR "D:\\Program Files\\opencv\\mingw-build\\install")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
# "C_Test"与你工程的命名相关,注意和原来CMakeList.txt中的声明一致
add_executable(C_Test main.cpp)
target_link_libraries(C_Test ${OpenCV_LIBS})
在main.cpp中输入以下内容
#include "iostream"
#include
using namespace std;
using namespace cv;
int main() {
Mat img = imread("lena.jpg");
if (img.empty()) {
cout << "Error" << endl;
return -1;
}
imshow("Lena", img);
waitKey();
return 0;
}
将lena.jpg放到cmake-build-debug路径中,因为编译生成的可执行文件在这里,或者你也可以使用绝对路径。
关于莱娜背后的故事有兴趣的同学可以参考这篇博客
原图:
真原图:http://www.lenna.org/full/l_hires.jpg
运行测试:
#-----------------------------------------------------------#
都看到这里了,真不打算点个赞吗 :)