Visual Studio Build OpenCV3

OpenCV2 和 OpenCV3的区别:
内容上,opencv2自带众多著名特征检测算子(如SIFT,SURF,ORB算子等),而opencv3则将这些移除,转移到一个第三方库opencv_contrib当中,另外部分宏定义上是有区别的,其他函数方面是没有区别的。在搭建过程方面,opencv2需要一一填写众多的链接,而opencv3则只需要添加一个opencv_world310(原理这里有提)。

搭建过程:
可在opencv官网下载源码——opencv下载(比较慢),选择自己需要的opencv版本,大致分两类——opencv2和opencv3。下载后得到这个——opencv是一个开源视觉库,所以说所下载的opencv实质是一些文件,而不是什么应用程序。双击安装包,选择安装路径,对opencv进行安装(实质是一个解压过程),得到,build里边就是所需要用的库,而sources里边是源码以及官方提供的一些示例和文档。接下来添加系统环境变量:


只需要添加bin目录——根据需求去添加,其中x64表示与编译时选择的解决方案平台对应的,有x64和x86之分(x86即win32)。后边的vc14代表使用的是vs2015,vc12代表vs2013。

添加完路径后点击确定完成更改。进入vs,新建一个win32,控制台应用程序,选择空项目。新建一个source文件(cpp文件),命名为main.c,代码就写在这个文件里。
接下来配置vs里的属性:
点击视图,其他窗口,属性管理器,在需要的配置的项目平台,右键,添加新项目属性表,取一个比较合适的名字,然后保存。之后在刚新建的属性列表上右键,选择属性,进入配置。需要3步:











首先是选择vc++目录,对包含目录进行编辑,添加三个路径,和之前在系统环境变量里添加的那前三个一样,再编辑里边的库目录,和系统环境变量的相对应,不同的是这里添加的是.lib的路径,系统环境变量里添加的是.bin的路径。第三步是添加链接器的输入附加依赖项,其对应的是刚刚添加的.lib路径里的文件名,其中同一个文件名有两个文件,一种尾部带有d,一种尾部不带d。若为debug模式,则添加所有前面带有d的.lib文件的文件名。若为release模式,则添加所有不带d的.lib文件的文件名(直接文本输入——与刚刚的添加路径操作有所不同),哪种模式用哪种模式对应的链接,否则会出现很奇怪的问题——比如我之前遇到的是:其他函数可以跑,但就是findcontours函数跑不了。此时若为opencv2,该路径里的.lib文件特别多,就得一一添加了,而opencv里就只用添加1~2个(具体看里边有多少个.lib文件,同样还是区分好哪些是给debug用的,哪些是给release用的,别添混了)。
接下来就是在刚刚的main.c文件里写自己的代码了,首先是打开摄像头的代码:
#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
	VideoCapture capture(0);
	namedWindow("读取视频",1);
	while (waitKey(1)!= 27)
	{
		Mat frame;
		capture >> frame;
		imshow("读取视频", frame);
	}
        return 0; 
}
若电脑没有摄像头(台式或摄像头坏了),则使用下面的代码:
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

int main()
{
	Mat src;
	namedWindow("show", 1);
	src = imread("1.png");
	while (waitKey(1)!=27)
	{
		imshow("show", src);
	}
	return 0;
}

需要注意的是:工程目录下得有个“1.png”的图片,若读者手头上没有.png的图片,那么把程序里边的.png后缀改成读者的图片的后缀就行了(注意好对应关系就好)。
注意:若出现问题:1,找不到什么什么文件,link错误,那么就是输入链接的添加,或是lib的添加出现问题。2,不识别opencv的头文件,那么就是头文件的添加出现问题,检查那三个include路径的添加是否有问题。3,运行程序,出现内存泄漏等内存问题,或是自己的电脑没有摄像头设备,或是图片没放到规定路径(得与自己刚创的那个main.c文件在一个目录下),或是文件名,后缀名没有对上(这样的话就得修改程序,或是修改自己准备的图片)。
一定要注意好各种对应关系,其实不出问题的话,自己就永远不知道这类问题怎么解决,遇到几个问题才会成长。
最后还留下来一个问题,就是自己新建的那个说了要取一个合适的名字的属性表。因为自己以后会建很多工程,不需要在属性表里再来配置一遍,只需要在属性管理器上右击需要的配置的项目平台,选择添加现有属性表,找到之前写好的那一个,添加进来即可。(之所以不直接添加在项目平台的属性里添加是因为那样太乱了,不好整理,专门为某种特定的库存一个属性表的话会很简洁,因为现在只是加了一个opencv的配置属性,以后加些openni,kinect,opengl,再把各自的什么32位,64位扯进来也不至于会乱)。
大体上的几个比较头疼的问题都是我遇到过的,也都提到了,之后会写的qt上的opencv配置还有几个其他的需要注意的点。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值