当前位置:   article > 正文

OpenCV 入门与进阶教程(一):OpenCV 4.1.0、opencv_contrib 编译与VS 2015环境配置_vs2015 opencv4.1.0 cmake

vs2015 opencv4.1.0 cmake

OpenCV 入门与进阶教程(一):OpenCV 4.1.0、opencv_contrib 编译与VS 2015环境配置

准备工作

博主使用OpenCV有一段时间了,现在打算把一些基本内容总结一下,主要还是对自己的大脑做个梳理,同时能和大家交流。目前已经版本已经更新到4.1.0,增加了很多功能,具体可以上官网查看。对我个人而言,各个版本其实区别不大,喜欢用最新的稳定版本。

  1. 下载OpenCV 4.1.0 源码:
    https://github.com/opencv/opencv/releases
  2. 下载opencv_contrib 4.1.0 源码:
    https://github.com/opencv/opencv_contrib/releases

这里需要注意下,opencv 3.0 以后,一些有专利的算法都集中在了opencv_contrib 中,例如常用的SIFT、SURF匹配算法等,因此是非常有必要安装的,此外,下载的版本应与OpenCV版本对应。

  1. 下载并安装cmake:
    https://cmake.org/download/

安装最新版本的就行了。

用cmake生成VS工程

  1. 解压缩源码,此处需要注意,两文件夹均为源码的顶级目录。在同一路径下创建临时工程文件夹build。
    在这里插入图片描述
  2. 打开cmake_gui,输入源码和工程文件夹路径,再configure,平台选择VS 2015以及x64
    在这里插入图片描述
    configure成功后应该得到如下结果:
    在这里插入图片描述

需要注意的是,opencv提供python调用的版本,因此最好把python 2.7安装一下,否则在cmake下面的输出中可能会报错:
在这里插入图片描述
3. 勾选以下几个选项:

  • 最终会生成一个opencv_world.dll 方便调用:
  • 勾选OPENCV_ENABLE_NONFREE,要不然nonfree包中的函数都用不了。输入第一步解压缩opencv_contrib 的modules目录
    在这里插入图片描述

configure两次,使所有红色的选项变白
在这里插入图片描述
4. generate 生成VS工程
在这里插入图片描述

使用VS 2015编译

  1. 用VS打开上一步生成的OpenCV.sln
  2. build - build solution (构建 - 构建解决方案)这个过程很漫长,在此不演示了
  3. 编译INSTALL
    在这里插入图片描述
  4. 最终生成的install文件夹即为编译好的opencv库
    在这里插入图片描述

使用opencv

建议创建opencv工程采用相对路径的方式,把库文件拷贝到工程文件,适合多个电脑移植,以及多版本的控制。

新建VS 2015工程,在工程文件夹中新建一个3rdParty目录,把上一步生成的install文件夹中的include, x64/vc14中的bin和lib,全部拷贝到3rdParty中,效果如下:
在这里插入图片描述
更改VS 2015设置

  1. 打开工程属性界面,注意最上方的平台为 x64
    C/C++ 的附加包含目录,填相对路径
    在这里插入图片描述
  2. 链接器-输入,也是相对路径
    在这里插入图片描述
  3. opencv_world410d.dll 的位置
    有人把它直接放入Windows目录下中,个人觉得不太合适,移植性太差,个人建议把编译好的install文件夹更改成OpenCV-4-1-0-My Build 放在D盘固定位置上,再更改环境变量,把opencv_world410d.dll 目录包含进去。效果如图:
    在这里插入图片描述
    更改环境变量
    打开cmd,输入:
setx PATH "%PATH%;D:\OpenCV\OpenCV-4-1-0-My Build\x64\vc14\bin"
  • 1

如果有release需求,把上面所有与opencv_world410d有关的内容改成opencv_world410即可。

测试SIFT特征提取

#include "opencv2/core/core.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/xfeatures2d.hpp"
#include "opencv2/highgui/highgui_c.h"

using namespace cv;
using namespace std;

Ptr<Feature2D> sift = xfeatures2d::SIFT::create();
int main()
{
    Mat img = imread("C:/Users/Public/Pictures/Sample Pictures/tulips.jpg");
    Ptr<Feature2D> sift = xfeatures2d::SIFT::create();
    vector<KeyPoint> keypoints;
    Mat descriptors;

    sift->detectAndCompute(img, noArray(), keypoints, descriptors);
    drawKeypoints(img, keypoints, descriptors, Scalar(0, 255, 255));
    namedWindow("w");//, CV_WINDOW_NORMAL);
	resizeWindow("w", 1027, 768);
	imshow("w", img);
    imshow("w", descriptors);
    waitKey(0);
    return 0; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

结果:
在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号