1.Cmake安装:在此我安装的是3.20.0
2.opencv4.5.1,下载压缩好的源代码
3.opencv_contrib,下载压缩好的源代码
注意opencv与opencv_contrib的版本一致,都是4.5.1,并将这两个源代码文件共同解压在一个文件夹下,这里我命名为opencv4.5,再新建一个文件夹build,用于存储cmake编译好的文件,如下图:
①打开cmake
source code填写opencv4.5.1的绝对路径;
where to build the binaries填写build的路径。
configure一下,会出现红色。
②勾选
BUILD_opencv_world
OPENCV_ENABLE_NONFREE:我勾选这个是为了使用opencv中的kinectfusion模块,如果要使用kinectfusion,必须勾选这一项,大家可做参考。
OPENCV_EXTRA_MODULES_PATHD:填写opencv_contrib中的modules的路径,如:D:/opencv4.5/opencv_contrib-4.5.1/modules
③查看CMakeDownloadLog文件
打开build文件夹中的CMakeDownloadLog.txt。
如果出现以https开头的网页链接,说明有部分文件没有下载成功。如果没有出现,就说明下载成功。我看有些帖子说搭外网可以解决,但是我搭外网还是没成功,得自己一个个下载。
以一个为例:
#use_cache "D:/opencv4.5/opencv-4.5.1/.cache"
#do_copy "opencv_ffmpeg.dll" "5e68a3ff82f43ac6524e50e448a34c9c" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/2a96257b743695a47f8012aab1ffb995a1dee8b4/ffmpeg/opencv_ffmpeg.dll" "D:/opencv4.5/build/3rdparty/ffmpeg"
这两句的意思是说将 opencv_ffmpeg.dll(它的md5签名是 5e……9c,下载地址是 "https:/……dll"这个链接 )从 “D:/opencv4.5/opencv-4.5.1/.cache” 拷贝到 "D:/opencv4.5/build/3rdparty/ffmpeg"目录下。
#missing "D:/opencv4.5/build/3rdparty/ffmpeg/opencv_ffmpeg.dll"
但是没有这个文件
#check_md5 "D:/opencv4.5/opencv-4.5.1/.cache/ffmpeg/5e68a3ff82f43ac6524e50e448a34c9c-opencv_ffmpeg.dll"
#mismatch_md5 "D:/opencv4.5/opencv-4.5.1/.cache/ffmpeg/5e68a3ff82f43ac6524e50e448a34c9c-opencv_ffmpeg.dll" "d41d8cd98f00b204e9800998ecf8427e"
#delete "D:/opencv4.5/opencv-4.5.1/.cache/ffmpeg/5e68a3ff82f43ac6524e50e448a34c9c-opencv_ffmpeg.dll"
#cmake_download "D:/opencv4.5/opencv-4.5.1/.cache/ffmpeg/5e68a3ff82f43ac6524e50e448a34c9c-opencv_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/2a96257b743695a47f8012aab1ffb995a1dee8b4/ffmpeg/opencv_ffmpeg.dll"
下载此文件到opencv4.5.1中的 /.cache/ffmpeg/,并命名为"md5-文件名"
#try 1
# timeout on name lookup is not supported
# getaddrinfo(3) failed for raw.githubusercontent.com:443
# Couldn't resolve host 'raw.githubusercontent.com'
# Closing connection 0
连接到服务器失败
所以我们只要把所有缺失文件下下来,放到/opencv4.5/opencv4.5.1/.cache/即可.
小贴士:
.cmake 和 .i 等文件的网页链接打开后,直接就显示了内容,我们需要将网页另存为文件,然后把后缀名改一下就好了。
我缺失了如下文件,如有需要,可以从此处下载。
opencv_ffmpeg.dll
opencv_ffmpeg_64.dll
ffmpeg_version.cmake
ippicv_2020_win_intel64_20191018_general.zip
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
boostdesc_lbgm.i
vgg_generated_48.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_120.i
face_landmark_model.dat
④删除 CMakeDownloadLog.txt
再 configure,直到cmake界面变白。
再次打开 CMakeDownloadLog.txt,此时发现无 https 开头的内容。(wwwwwww终于好了,老母亲流下激动的泪水)
generate一下,okk
用 vs 打开 build 文件中的 OpenCV.sln 文件,点击“生成”->"批生成“,勾划ALL BUILD 与INSTALL:
大概一个多小时,我显示的是无错误,应该是前面的工作铺垫得好hhhhh
右击 CMakeTargets 下的 INSTALL ,点击 ”仅用于项目“->“仅生成INSTALL”
成功!
⑤配置OpenCV环境变量
右击【此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 系统变量 -> 找到Path -> 编辑 -> 新建】,添加环境变量D:\opencv4.5\build\install\x64\vc15\bin ->确定。
新建一个空项目,点击 ”项目“ -> “属性” 。
VC++目录 :包含目录 填 D:\opencv4.5\build\install\include D:\opencv4.5\build\install\include\opencv2
库目录:D:\opencv4.5\build\install\x64\vc15\lib
链接器->附加依赖项:
opencv_world451d.lib
opencv_img_hash451d.lib
链接器->常规->附加库目录:D:\opencv4.5\build\install\x64\vc15\lib
点击 应用 ,欧克!
测试一下
#include <opencv2\opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{
Mat img = imread("图片路径");
imshow("img", img);
waitKey(0);
return 0;
}