从零开始 OpenCV (一) —— 环境配置(OpenCV 3.3.1 + VS 2017)

本文详细介绍了如何在Windows 10 (64位) + Visual Studio 2017环境下配置OpenCV 3.3.1,并通过一个简单的示例展示了如何使用OpenCV库读取和显示图像。

从零开始 OpenCV (一) —— 环境配置(OpenCV 3.3.1 + VS 2017)

Here you can read tutorials about how to set up your computer to work with the OpenCV library in opencv.org.

环境配置

准备工作

Win10(64 bit) + VS 2017

环境配置

  • 下载解压 OpenCV

    1. 进入 Opencv 官网 opencv.org, 选择最新版本的 OpenCV Pack 并下载(我这里下载的是 OpenCV 3.3.1).

      OpenCV_Download

    2. 双击下载的 .exe 文件, 选择保存的保存的路径, 即可解压 OpenCV 库.

      SelfExtracting

  • 配置环境变量

    1. 右键点击 “此电脑”, 点击 “属性” 项;
    2. 选择 “高级系统设置”;

      SystemSetting

    3. 选择 “环境变量”;

      SystemVar

    4. 将解压好的 OpenCV 的 bin 路径添加到 Path 系统环境变量中。

      SystemVarPath

第一个 OpenCV 小例子

创建项目, 配置环境

  • 用 VS 2017 创建控制台项目 FirstOpenCVSample
  • 选择 “项目” –> “属性”

    VSPrj

  • 添加包含目录(<解压路径>\opencv\build\include)和库目录(<解压路径>\opencv\build\x64\vc14\lib):

    libIncludePath

  • 添加附加依赖项: opencv_world331d.lib(debug 版), opencv_world331.lib(release 版)

    addtionPath

第一个 OpenCV 小例子

#include <iostream>
#include <opencv2/core/core.hpp>       // OpenCV 核心库:定义了图像数据结构
#include <opencv2/highgui/highgui.hpp> // highgui: 包含了所有图形接口函数

using namespace std;
using namespace cv; //引入 OpenCV 的命名空间
int main()
{
    // 定义一个图像变量
    Mat matAli;

    // 从内存读入一张图像
    matAli = imread("C:\\Users\\yanglion\\Pictures\\Img\\Ali.jpg");

    // 将该图像显示在新建的窗口内
    imshow("matAli", matAli);

    // 永远等待按钮
    waitKey(0);

    return 0;
}

运行效果:

matAliResult

OpenCV小项目 这是个个人在使用OpenCV过程中写的些小项目,以及些非常有用的OpenCV代码,有些代码是对某论文中的部分实现。 注意:代码是在Xcode里写的,如果要在win下测试,遇到问题自己修改。 opencv-rootsift-py 用python和OpenCV写的个rootsift实现,其中RootSIFT部分的代码参照Implementing RootSIFT in Python and OpenCV这篇文章所写,通过这个你可以了解Three things everyone should know to improve object retrieval这篇文章中RootSIFT是怎么实现的。 sift(asift)-match-with-ransac-cpp 用C++OpenCV写的个图像匹配实现,里面包含了采用1NN匹配可视化、1NN匹配后经RANSAC剔除错配点可视化、1NN/2NN<0.8匹配可视化、1NN/2NN<0.8经 RANSAC剔除错配点可视化四个过程,其中1NN/2NN<0.8匹配过程是Lowe的Raw feature match,具体可以阅读Lowe的Distinctive image features from scale-invariant keypoints这篇文章。这个对图像检索重排非常有用。另外里面还有用OpenCV写的ASIFT,这部分来源于OPENCV ASIFT C++ IMPLEMENTATION,ASIFT还可以到官网页面下载,ASIFT提取的关键点 比SIFT要多得多,速度非常慢,不推荐在对要求实时性的应用中使用。 更多详细的分析可以阅读博文SIFT(ASIFT) Matching with RANSAC。 有用链接 OpenCV3.0文档 // 测试sparse unsigned int centersNum = 10; vector descrNums; descrNums.push_back(8); descrNums.push_back(12); //unsigned int T[] = {1, 2, 1, 3, 2, 5, 4, 3, 10, 5; 4, 2, 6, 5, 2, 5, 4, 6, 2, 4}; unsigned int T[] = {1, 2, 1, 3, 2, 5, 4, 3, 10, 5, 4, 2, 6, 5, 2, 5, 4, 6, 2, 4}; sp_mat Hist(descrNums.size(), centersNum); static long int count = 0; for (int i = 0; i < descrNums.size(); i++){ unsigned int* desrcElementsTmp = new unsigned int[descrNums[i]]; memcpy(desrcElementsTmp, T + count, descrNums[i] * sizeof(T[0])); //cout << desrcElementsTmp[0] << &#39;\t&#39; << desrcElementsTmp[1] << &#39;\t&#39; << desrcElementsTmp[2] << &#39;\t&#39; << desrcElementsTmp[3] << &#39;\t&#39; << desrcElementsTmp[4] << &#39;\t&#39; <<endl; //cout << desrcElementsTmp[5] << &#39;\t&#39; << desrcElementsTmp[6] << &#39;\t&#39; << desrcElementsTmp[7] << &#39;\t&#39; << desrcElementsTmp[8] << &#39;\t&#39; << desrcElementsTmp[9] << &#39;\t&#39; << desrcElementsTmp[10] << &#39;\t&#39; <<endl; //cout << endl; sp_mat X(1, centersNum); X.zeros(); for (int j = 0; j < descrNums[i]; j++){ X(0, desrcElementsTmp[j]-1) += 1; } X.print("X:"); X = X/norm(X, 2); Hist.row(i) = X; count = count + descrNums[i]; delete desrcElementsTmp; } //Hist.print("Hist:");
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值