CMake Opencv以及如何添加opencv-contrib库以及VS如何配置OPENCV

7 篇文章 0 订阅

1. 下载opencv、opencv-contrib以及CMake

opencv网址:https://opencv.org/releases/

opencv-contrib网址:https://github.com/opencv/opencv_contrib/releases

CMake网址:https://cmake.org/download/

两者版本一定要相同!!!

2. 下载完成后,打开CMake(最好用比较新版本的CMake),点击“Browse Source...”,找到opencv解压后的sources文件夹。

     点击“Browse Build...”,可以在opencv文件夹下新建一个文件夹,用于存放待会Build出来的opencv。

     之后点击“configure”,选择好你想使用的编译器,确定之后即开始config。(要联网,我make的过程中有下载一些文件)

3. 第一遍configure之后,会有很多红色,此时我们找到如下图所示的选项,打钩。然后点击该项的下面一项,找到下载的opencv-contrib的“modules”文件夹,确定,再次点击"configure"。结束后若还有红色,继续"configure",直至没有红色。

4. configure完之后,点击“Generate”,等待完成

 

5. Generate完之后,点击“Open Project”

6. 打开project之后,选择自己要的版本(Debug还是Release,x86还是x64),右键"ALL BUILD"->"生成",然后是个漫长的build过程

   (这里好像Debug版本build出来会有问题,好像是因为要用python,而python发布的都是release版本,所以不兼容,具体原因      不是很清楚,反正我用build出来的Debug版本,一运行就出错,而Release就可以正常运行)

 

7. Long time ago......,build完之后,没有失败的才可以,之后右键“INSTALL”->"生成",这个比较快。最后结果如下图所示

8. CMake以及编译完之后,就是如何配置了。这里以VS2017 + opencv4.1.2为例

1)  新建一个新的空的win32工程,然后按下图打开属性管理器

2) 按下图添加新的属性页,名字自己取就好。新建好之后,双击打开属性配置页。

3) 点击“VC++ 目录”,分别选择“包含目录”和“库目录”,我的目录是

包含目录:F:\opencv\opencv4.1.2\install\include

                  F:\opencv\opencv4.1.2\install\include\opencv2

库目录:F:\opencv\opencv4.1.2\install\x86\vc15\lib

4) 再点击“链接器”->“常规”->“附加库目录”,把上边的库目录在加一次

5) 再点击“链接器”->“输入”->“附加依赖项”,把需要的库加进去,这里我把所有的都加进去了,如下所示,要是用的其它版本,可以用记事本替换相应版本号就可以,也挺方便

opencv_aruco412.lib
opencv_bgsegm412.lib
opencv_bioinspired412.lib
opencv_calib3d412.lib
opencv_ccalib412.lib
opencv_core412.lib
opencv_datasets412.lib
opencv_dnn_objdetect412.lib
opencv_dnn_superres412.lib
opencv_dnn412.lib
opencv_dpm412.lib
opencv_face412.lib
opencv_features2d412.lib
opencv_flann412.lib
opencv_fuzzy412.lib
opencv_gapi412.lib
opencv_hfs412.lib
opencv_highgui412.lib
opencv_img_hash412.lib
opencv_imgcodecs412.lib
opencv_imgproc412.lib
opencv_line_descriptor412.lib
opencv_ml412.lib
opencv_objdetect412.lib
opencv_optflow412.lib
opencv_phase_unwrapping412.lib
opencv_photo412.lib
opencv_plot412.lib
opencv_quality412.lib
opencv_reg412.lib
opencv_rgbd412.lib
opencv_saliency412.lib
opencv_shape412.lib
opencv_stereo412.lib
opencv_stitching412.lib
opencv_structured_light412.lib
opencv_superres412.lib
opencv_surface_matching412.lib
opencv_text412.lib
opencv_tracking412.lib
opencv_video412.lib
opencv_videoio412.lib
opencv_videostab412.lib
opencv_xfeatures2d412.lib
opencv_ximgproc412.lib
opencv_xobjdetect412.lib
opencv_xphoto412.lib

9. 配置环境变量

我的dll路径为:F:\opencv\opencv4.1.2\install\x86\vc15\bin

按照以下几个图点击即可,最后在填写路径时注意不要忘了;号

10. All is Done!!测试代码如下。这是一段查找特征点的代码,运行结果如下图,(就是为了#include<opencv2/xfeatures2d/nonfree.hpp>这个玩意,才加的opencv-contrib)

#include<stdio.h>
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/xfeatures2d/nonfree.hpp>
#include<opencv2/features2d/features2d.hpp>


using namespace cv;
using namespace cv::xfeatures2d;

int main()
{
    Mat img_1 = imread("F:\\MFC\\Opencv\\build.png");
    Mat img_2 = imread("F:\\MFC\\Opencv\\rectangle.png");
    if (!img_1.data || !img_2.data)
    {
        std::cout << " --(!) Error reading images " << std::endl; return -1;
    }

    int minHessian = 400;
    Ptr<SURF> detector = SURF::create(minHessian);
    std::vector<KeyPoint> keypoints_1, keypoints_2;
    detector->detect(img_1, keypoints_1);
    detector->detect(img_2, keypoints_2);

    Mat img_keypoints_1, img_keypoints_2;

    drawKeypoints(img_1, keypoints_1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
    drawKeypoints(img_2, keypoints_2, img_keypoints_2, Scalar::all(-1), DrawMatchesFlags::DEFAULT);

    imshow("Keypoints 1", img_keypoints_1);
    imshow("Keypoints 2", img_keypoints_2);
    waitKey(0);
    return 0;
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kuangbao9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值