OpenCV4.5.2(+opencv_contrib)+CMake3.20.1+vs2017重新编译

本文仅做学习使用,若侵权,请留言删除
参考文献:
Windows下 Cmake + VS 编译 OpenCV (+ opencv_contribute)源码
OpenCV3.4.1+opencv_contrib编译:windows 10
win10下利用cmake和vs重新编译opencv源码
opencv编译之后找不到opencv_worldxxx.lib的原因
编译支持CUDA的Opencv4.2

OpenCV下载地址:https://opencv.org/releases/

opencv_contrib下载地址:https://github.com/opencv/opencv_contrib

1、下载解压OpenCV452:

重新编译的理由是因为我们在用C++调用OpenCV时会碰到某些库文件没有的情况。所以一般自己下载源码,根据自己的需求生成依赖库会好一些,在这里我们下载Source源码:

下载完成后右键解压:

解压缩后将文件夹放入C盘并以版本号命名:

解压缩后里面内容如下,同时创建一个rebuild文件夹:

Win+R开启cmd后进入该文件夹,同时输入cmake-gui,可调用CMake:

首先点击Browse Source按键选择OpenCV452文件夹路径:

然后点击Browse Build按键选择OpenCV452/rebuild文件夹路径:

继续点击config,下拉选择自己的VS版本后,选择x64,点击Finish:

最后编译开始,在红框处可以看见变动:

这里第一次config的完成后,search 中查找一些参数进行相应操作:

输入wo查找BUILD_opencv_world,不要勾选,因为据说安装了anaconda会导致编译引入不正确,不能生成opencv_worldxxx.lib文件,

输入mo查找OPENCV_EXTRA_MODULES_PATH:

输入NON朝招OPENCV_ENABLE_NONFREE勾选:

输入SET查找OPENCV_GENERATE_SETUPVARS不勾选:

输入test查找OPENCV_PERF_TESTS、BUILD_TESTS、BUILD_opencv_python_tests不勾选:

输入java查找BUILD_JAVA、BUILD_opencv_java_bingdings_generator不勾选:

输入python查找BUILD_opencv_python3、BUILD_opencv_python_bingdings_generator不勾选:

这些操作完成后,再次点击Configure,若上面仍有红色则再一次Configure直到没有为止:

此时contrib附加库会需要下载一些文件,一般会下载失败,我们需要找到rebuild文件下的CMakeDownloadLog.txt,其中各解释如下:

我们需要通过下载源地址将文件放在文件暂存路径里面,命名则是MD5_文件名。其中 .cmake 和 .i 文件需要右击另存为来保存。所有缓存文件在源文件下的 .cache 文件夹中:

操作完成后再次点击Configure:

此时在该区域不再爆红,则可以进行Generate操作:

出现 1 后,点击 2 ,下一步就是用VS进行源码编译

2、用vs2017编译OpenCV源代码

在Generate之后,我们进入opencv/rebuild文件下,可以看到工程文件,双击sln文件打开vs2017

打开vs2017页面如下,此时有两种模式:Debug和Release,在解决方案中找到CMakeTargets:

第一种模式Debug:选中CMakeTargets中的ALL_BUILD,右击生成或者重新生成:

完成后转换为Release模式,执行相同操作:

在Debug和Release两个版本都生成好以后,右击INSTALL——仅用于项目——仅生成INSTALL:

其下是我踩过的坑,按以上操作应该不会有坑:

vs2015编译OpenCV错误总结如下:

d:\users\humeme\desktop\opencv452\modules\dnn\misc\tensorflow\op_def.pb.h(17): fatal error C1189: #error:  This file was generated by an older version of protoc which is (编译源文件 D:\Users\humeme\Desktop\opencv452\modules\dnn\misc\tensorflow\op_def.pb.cc)解决方案:这是由于anaconda没有安装TensorFlow,安装上就可以。严重性 代码  说明  项目  文件  行   禁止显示状态
错误  C1189   #error:  This file was generated by an older version of protoc which is (编译源文件 D:\Users\humeme\Desktop\opencv440\modules\dnn\src\onnx\onnx_graph_simplifier.cpp)    opencv_world    D:\Users\humeme\Desktop\opencv440\modules\dnn\misc\onnx\opencv-onnx.pb.h    17  解决方案:这里是由于勾选了 BUILD_opencv_world 选项导致anaconda导入文件混乱,最好不勾选,需要的lib一个个导入。同时也有人说不需要生成opencv_worldxxxd.lib,因为实际工程中会造成大量的冗余

OpenCV配置VS实例验证:

新建项目Ctrl+Shift+N啊,重新命名以及选择文件保存路径:

在项目右边选择解决方案资源管理器:

点击源文件右击选择添加——新建项,新建cpp文件并命名:

新建后输入以下代码,注意修改图片的路径:

#include "opencv2/core/utility.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"#include <stdio.h>using namespace cv;
using namespace std;int edgeThresh = 1;
Mat image, gray, edge, cedge;// define a trackbar callback
static void onTrackbar(int, void*)
{blur(gray, edge, Size(3, 3));// Run the edge detector on grayscaleCanny(edge, edge, edgeThresh, edgeThresh * 3, 3);cedge = Scalar::all(0);image.copyTo(cedge, edge);imshow("Edge map", cedge);
}static void help()
{printf("\nThis sample demonstrates Canny edge detection\n""Call:\n""   /.edge [image_name -- Default is ../data/fruits.jpg]\n\n");
}const char* keys =
{"{help h||}{@image |../data/fruits.jpg|input image name}"};int main(int argc, const char** argv)
{CommandLineParser parser(argc, argv, keys);if (parser.has("help")){help();return 0;}//!!!!这里将 filename 换成你自己图片的绝对路径就可以了,只要修改这一处!!!!string filename = "D:/VSCODE/canny_detect/111.png";image = imread(filename, 1);if (image.empty()){printf("Cannot read image file: %s\n", filename.c_str());help();return -1;}cedge.create(image.size(), image.type());cvtColor(image, gray, COLOR_BGR2GRAY);// Create a windownamedWindow("Edge map", 1);// create a toolbarcreateTrackbar("Canny threshold", "Edge map", &edgeThresh, 100, onTrackbar);// Show the imageonTrackbar(0, 0);// Wait for a key stroke; the same function arranges events processingwaitKey(0);system("pause");return 0;
}

选择属性管理器双击Microsoft.Cpp.x64.user:

选择VC++目录——包含目录:

D:\Users\humeme\Desktop\rebuild\install\include
D:\Users\humeme\Desktop\rebuild\install\include\opencv2

选择VC++目录——库目录

链接器——输入

opencv_aruco440.lib
opencv_aruco440d.lib
opencv_bgsegm440.lib
opencv_bgsegm440d.lib
opencv_bioinspired440.lib
opencv_bioinspired440d.lib
opencv_calib3d440.lib
opencv_calib3d440d.lib
opencv_ccalib440.lib
opencv_ccalib440d.lib
opencv_core440.lib
opencv_core440d.lib
opencv_datasets440.lib
opencv_datasets440d.lib
opencv_dnn440.lib
opencv_dnn440d.lib
opencv_dnn_objdetect440.lib
opencv_dnn_objdetect440d.lib
opencv_dnn_superres440.lib
opencv_dnn_superres440d.lib
opencv_dpm440.lib
opencv_dpm440d.lib
opencv_face440.lib
opencv_face440d.lib
opencv_features2d440.lib
opencv_features2d440d.lib
opencv_flann440.lib
opencv_flann440d.lib
opencv_fuzzy440.lib
opencv_fuzzy440d.lib
opencv_gapi440.lib
opencv_gapi440d.lib
opencv_hdf440.lib
opencv_hdf440d.lib
opencv_hfs440.lib
opencv_hfs440d.lib
opencv_highgui440.lib
opencv_highgui440d.lib
opencv_imgcodecs440.lib
opencv_imgcodecs440d.lib
opencv_imgproc440.lib
opencv_imgproc440d.lib
opencv_img_hash440.lib
opencv_img_hash440d.lib
opencv_intensity_transform440.lib
opencv_intensity_transform440d.lib
opencv_line_descriptor440.lib
opencv_line_descriptor440d.lib
opencv_ml440.lib
opencv_ml440d.lib
opencv_objdetect440.lib
opencv_objdetect440d.lib
opencv_optflow440.lib
opencv_optflow440d.lib
opencv_phase_unwrapping440.lib
opencv_phase_unwrapping440d.lib
opencv_photo440.lib
opencv_photo440d.lib
opencv_plot440.lib
opencv_plot440d.lib
opencv_quality440.lib
opencv_quality440d.lib
opencv_rapid440.lib
opencv_rapid440d.lib
opencv_reg440.lib
opencv_reg440d.lib
opencv_rgbd440.lib
opencv_rgbd440d.lib
opencv_saliency440.lib
opencv_saliency440d.lib
opencv_shape440.lib
opencv_shape440d.lib
opencv_stereo440.lib
opencv_stereo440d.lib
opencv_stitching440.lib
opencv_stitching440d.lib
opencv_structured_light440.lib
opencv_structured_light440d.lib
opencv_superres440.lib
opencv_superres440d.lib
opencv_surface_matching440.lib
opencv_surface_matching440d.lib
opencv_text440.lib
opencv_text440d.lib
opencv_tracking440.lib
opencv_tracking440d.lib
opencv_video440.lib
opencv_video440d.lib
opencv_videoio440.lib
opencv_videoio440d.lib
opencv_videostab440.lib
opencv_videostab440d.lib
opencv_xfeatures2d440.lib
opencv_xfeatures2d440d.lib
opencv_ximgproc440.lib
opencv_ximgproc440d.lib
opencv_xobjdetect440.lib
opencv_xobjdetect440d.lib
opencv_xphoto440.lib
opencv_xphoto440d.lib

将以上lib复制进去后一路确定退出。

最后点击生成——生成解决方案,在点击调试开始执行结果如下:

OpenCV4.5.2(+opencv_contrib)+CMake3.20.1+vs2017重新编译相关推荐

  1. opencv-4.5.3 + opencv_contrib-4.5.3 + vtk-9.0.3编译(全流程)

    opencv-4.5.3 + opencv_contrib-4.5.3 + vtk-9.0.3编译(全流程) 文章目录 opencv-4.5.3 + opencv_contrib-4.5.3 + vt ...

  2. 在 Win vs2017 下编译 zint

    在 Win vs2017 下编译 zint 记录如何在 Win vs2017 下编译 zint. Zint是一个强大的二维码编码生成开源工具,基于C语言开发,支持Code 128, Data Matr ...

  3. Cmake3.20、VS2019编译OpenCV4.3.0+CUDA11.1,显卡Geforce 940MX

    1.下载Cmake.VS2019.OpenCV.CUDA (1)Cmake下载:Cmake (2)VS2019,建议下载社区版,免费:VS (3)CUDA下载的时候看要你的英伟达显卡是否支持,在这里找 ...

  4. 计算机视觉算法库OpenCV4.5.3+OpenCV_contrib 4.5.3资料精讲

    OpenCV4.5.3及OpenCV_contrib 4.5.3 前段时间有个实习生来这边实习,已经申请到卡耐基梅隆大学 机器人专业的博士生,主攻机器视觉.本着负责的态度,从头到尾讲述了伟大的开源且跨 ...

  5. Windows10 VS2019下使用CMake3.20.1打开PCL1.11.0程序

    安装CMake 为什么要使用cmake cmake 是kitware 公司以及一些开源开发者在开发几个工具套件(VTK)的过程中衍生品,成为一个独立的开放源代码项目. CMake是一个很强大的编译配置 ...

  6. opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录

    目录 一  VTK编译 二  无opencv_contrib编译记录 三  有opencv_contrib编译记录 四  参考链接 mingw编译器针对很多仓库代码没有编译错误,适配mingw是个好选 ...

  7. opencv4.0.1配合contrib在linux下面安装编译全过程

    环境: opencv:4.0.1 opencv_contrib:4.0.1 使用git checkout获得上述两个版本即可,不要重复去下载压缩包 ubuntu18.10 需要下载的东西: ippic ...

  8. opencv3.4.4 +contrib模块在win10+vs2017的编译和配置

    文章目录 1 准备工作 1.1.下载opencv源文件 1.2.解压文件 1.3.cmake安装 1.4.visual studio 2017的安装 2 cmake编译 2.1.设置cmake的路径 ...

  9. Ubuntu 20.04 源码编译Paddle2.2.2

    做研发,总是要不停装新机器和新系统.今天尝试了一下编译Paddle2.2.2. 先说结果: (1)Ubuntu20.04 + Python3.8.10 + gcc-8 (2)cuda和cudnn的版本 ...

最新文章

  1. Aggregation,Composition和Dependency
  2. Invalid byte tag in constant pool: 19 与 javax/el/ELManager问题解决
  3. share extension 不显示_这几项超好用的云开发扩展能力,别说你还不知道!
  4. 关于人类肉眼识别模式的简单想法
  5. Docker 安装Grafana可视化面板
  6. python自动登录教程_Python 实现自动登录+点击+滑动验证功能
  7. 2021牛客暑期多校训练营4 H-Convolution(数学)
  8. c语言小游戏 精简_一个简易的贪吃蛇小游戏C语言源码
  9. H.264/AVC 标准中CAVLC 和CABAC 熵编码算法研究
  10. anaconda来创建python环境
  11. threadlocal get为空_面试常见知识点:ThreadLocal
  12. 99%的人都会遇到的Python “用户环境”问题
  13. Git撤销之世上真有后悔药
  14. SmartDNS设置和各个选项意义使用指南
  15. 小明左右手分别拿了两张牌,黑桃十和红心八,现在交换手中的牌。编写一个程序模拟这一过程:两个整数分别保存两个变量,将这两个变量的值互换,并输出互换后的结果
  16. 无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
  17. 【CVPR2020视频超分辨率】Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution 阅读笔记
  18. 笔记本安装内存条、重装系统教程
  19. OPPO广告联盟战略升级,全面提升开发者变现效率
  20. android 美团多渠道打包方案

热门文章

  1. 光耦w314的各引脚图_单通道光耦ACPL-312U-500E设计,ACPL-W314-000E线路图
  2. 《基于数字信号处理的相干光通信技术》读书笔记chapter I——导论
  3. 解决QT提示No previous extern declaration for non-static variable 'sss'
  4. AD学习笔记(四)PCB布局分析
  5. QGIS在地图上绘制经纬网
  6. input 只能输入正整数,包括 0
  7. 计算机科学领域sci杂志,【分享】计算机类SCI杂志--其他(无重复) - 信息科学 - 小木虫 - 学术 科研 互动社区...
  8. 架构师进阶之路——1、持久化框架(一)
  9. 当初的愿望实现了么? .
  10. C语言永久不会过时?