zoukankan      html  css  js  c++  java
  • opencv4.0.0+cmake编译(含contrib)

    https://blog.csdn.net/bobo184/article/details/88749651

    前言
    笔者环境:win10+vs2015+cmake3.8.2

    介绍下4.0.0的新特性,沿用官网的说明:

    在发布3.0版的近3.5年后,我们很高兴推出4.x系列的第一个稳定版本。

    版本特性:

    OpenCV现在是C ++ 11库,需要兼容C++ 11标准的编译器。所需的最低CMake版本已提升至3.5.1。
    很多OpenCV 1.x的C API已被删除
    在核心模块中延续性(在XML,YAML或JSON中存储和加载结构化数据)已在C ++中完全重新实现,并且也去掉了C API。
    添加了新的模块G-API,它可以作为非常高效的基于图形的图像处理流水线的引擎。
    dnn模块使用OpenVINO™工具包R4中的深度学习部署工具包(Deep Learning Deployment Toolkit)进行了更新。请参阅指南如何构建和使用支持DLDT的OpenCV。
    dnn模块现在包括实验性Vulkan后端,并支持ONNX格式的网络。
    流行的Kinect Fusion算法已实现,并针对CPU和GPU(OpenCL)进行了优化
    QR图码检测器和解码器已添加到objdetect模块中
    非常高效且高质量的DIS密集光流算法已从opencv_contrib转移到视频模块。
    更多细节可以在之前的宣布中找到:4.0-alpha,4.0-beta,4.0-rc和更新日志
    1、下载
    在opencv的官网或者opencv的github上都可以下载,笔者在GitHub上下载。

    https://opencv.org/releases/

    下载扩展库

    打开opencv的GitHub,如下:

    https://github.com/opencv

     

      

     下载完解压得到,下面开始编译(玩cv自己不会编译是不行的):

     2、cmake编译
     在opencv目录下,新建一个文件夹newbuild,接下来编译的结果将存放在这个目录下。

    (1)cmake配置与生成


     

     

     等待一段时间,

     中间部分报错,比如python版本不对,想先忽略不用它。

     

     

     接下来添加扩展库contrib的module

     

     -----------------------------------------------------------------------------------------------没有cuda版本---------------------------------------------------------------------------------------

    添加生成dll

     

     重新点击一次,

     然后点击generate,开始下载各种需要的依赖,最好开下载代理更快。

     等待一段时间,generate done,所有的红色就会没有,否则只能重新生成了。

     --------------------------------------------------------------------------有cuda版本----------------------------------------------------------------------------------------------------

     https://blog.csdn.net/omg_orange/article/details/98068001

    次配置后,出现一片红色,再点一次配置就变白了。变白后改变其中的三个选项:
    1.注意勾选WITH_CUDA(带了cuda后,以后发布程序到其他电脑上都要带cuda的DLL文件,所以慎重选择)
    2.不勾选BUILD_opencv_world选项
    3.在OPENCV_EXTRA_MODULES_PATH选项中,填写opencv_contrib解压目录下,modules文件夹的路径,这样就把opencv_contrib编译进去了。

    4 如果你想用 SURF,SIFT算法的话需要把 OPENCV_ENABLE_NONFREE 勾上

    开启cuda

     添加扩展库

     

     再次点击  配置,等待结束

    Generate按键,生成vs工程文件了。 生成完毕之后在 “ Configuring done"下面会出现”Generating done"。

    结束后,之后直接点击“Open Project",便会使用VS2019打开工程。

     

     (2)vs编译生成install
    打开build下的的OpenCV.sln文件,

     

     找到CmakeTargets下的install,右击 点击 生成,。

     

     分别编译Release版本和Debug版本,最后可以在指定输出文件夹下的install文件夹下找到编译输出内容

     

     

    (3)重新配置opencv,环境变量/依赖项等等
    这里就驾轻就熟了,和以前的版本一样,

    添加环境变量到path

     

     然后打开vs2015,打开属性管理器,

     

     点击Debug x64下的第一个,打开属性

     

     包含目录为:

    installinclude

    installincludeopencv2

    install是刚才上面生成的

     

     然后是链接器下 输入 

    lib文件带d的是debug模式下的,没有就是release模式,

    笔者这里是debug模式下的,release没有编译,如过需要,和前面的步骤差不多。

    回到前面这张图,重新生成。

     debug版本 400

    opencv_aruco400d.lib
    opencv_bgsegm400d.lib
    opencv_bioinspired400d.lib
    opencv_calib3d400d.lib
    opencv_ccalib400d.lib
    opencv_core400d.lib
    opencv_datasets400d.lib
    opencv_dnn_objdetect400d.lib
    opencv_dnn400d.lib
    opencv_dpm400d.lib
    opencv_face400d.lib
    opencv_features2d400d.lib
    opencv_flann400d.lib
    opencv_fuzzy400d.lib
    opencv_hfs400d.lib
    opencv_highgui400d.lib
    opencv_img_hash400d.lib
    opencv_imgcodecs400d.lib
    opencv_imgproc400d.lib
    opencv_line_descriptor400d.lib
    opencv_ml400d.lib
    opencv_objdetect400d.lib
    opencv_optflow400d.lib
    opencv_phase_unwrapping400d.lib
    opencv_photo400d.lib
    opencv_plot400d.lib
    opencv_reg400d.lib
    opencv_rgbd400d.lib
    opencv_saliency400d.lib
    opencv_shape400d.lib
    opencv_stereo400d.lib
    opencv_stitching400d.lib
    opencv_structured_light400d.lib
    opencv_superres400d.lib
    opencv_surface_matching400d.lib
    opencv_text400d.lib
    opencv_tracking400d.lib
    opencv_video400d.lib
    opencv_videoio400d.lib
    opencv_videostab400d.lib
    opencv_xfeatures2d400d.lib
    opencv_ximgproc400d.lib
    opencv_xobjdetect400d.lib
    opencv_xphoto400d.lib
    

      

    relase版本  400

    opencv_aruco400.lib
    opencv_bgsegm400.lib
    opencv_bioinspired400.lib
    opencv_calib3d400.lib
    opencv_ccalib400.lib
    opencv_core400.lib
    opencv_datasets400.lib
    opencv_dnn_objdetect400.lib
    opencv_dnn400.lib
    opencv_dpm400.lib
    opencv_face400.lib
    opencv_features2d400.lib
    opencv_flann400.lib
    opencv_fuzzy400.lib
    opencv_hfs400.lib
    opencv_highgui400.lib
    opencv_img_hash400.lib
    opencv_imgcodecs400.lib
    opencv_imgproc400.lib
    opencv_line_descriptor400.lib
    opencv_ml400.lib
    opencv_objdetect400.lib
    opencv_optflow400.lib
    opencv_phase_unwrapping400.lib
    opencv_photo400.lib
    opencv_plot400.lib
    opencv_reg400.lib
    opencv_rgbd400.lib
    opencv_saliency400.lib
    opencv_shape400.lib
    opencv_stereo400.lib
    opencv_stitching400.lib
    opencv_structured_light400.lib
    opencv_superres400.lib
    opencv_surface_matching400.lib
    opencv_text400.lib
    opencv_tracking400.lib
    opencv_video400.lib
    opencv_videoio400.lib
    opencv_videostab400.lib
    opencv_xfeatures2d400.lib
    opencv_ximgproc400.lib
    opencv_xobjdetect400.lib
    opencv_xphoto400.lib
    

      

     然后确定就行了。

    (4)测试

    新建工程-添加源文件-简单代码(sift特征检测)

    代码如下:

    #include <iostream>
    #include <vector>
    #include <opencv2/xfeatures2d.hpp>
    #include <opencv2/xfeatures2d/nonfree.hpp>
    #include <opencv2/highgui.hpp>
     
    using namespace cv;
    using namespace std;
     
    int main()
     
    {
    	Mat src = imread("F:/vs_test/lena.jpg");
     
    	if (src.data == NULL)
    	{
    		cout << "No exist" << endl;
    		return -1;
    	}
    	namedWindow("input image", WINDOW_AUTOSIZE);
    	namedWindow("output image", WINDOW_AUTOSIZE);
    	imshow("input image", src);
    	Ptr<Feature2D> sift = xfeatures2d::SIFT::create(400); //括号参数越大越精确,自定
    	vector <KeyPoint> keypointsa;
    	Mat a;
     
    	sift->detectAndCompute(src, noArray(), keypointsa, a); //得到特征点和特征点描述
    	drawKeypoints(src, keypointsa, src);//画出特征点
     
    	//显示
    	imshow("output image", src);
     
    	waitKey();
    	return 0;
    }
    
    

      

  • 相关阅读:
    fopen C++
    Jungle Roads(最小生成树+并查集)
    Magic Number(dp)
    error: macro names must be identifiers
    <errors>'MessageBoxA' : function does not take 1 parameter
    归并排序模板
    MFC程序出现“Debug Assertion Failed! File:afx.inl Line:177”错误
    构造函数初始化列表
    (Codeforces Round #136 (Div. 2))A. Little Elephant and Function(递归分析,简单)
    Argus(ZOJ Problem Set 2212)(优先队列)
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/11701511.html
Copyright © 2011-2022 走看看