在VS中配置并测试opencv
什么是opencv?
opencv是一个计算机视觉库。它目前有两个分支2.4.X和3.X,2.4.X版本是经典版本,网上的教程资源大多是关于它的,所以推荐使用2.4.X。
它能帮我做什么?
这意味着你可以在自己的程序中使用计算机视觉相关功能,但不必关注具体实现。就像你使用电脑,但并不用关注电脑内部的原理。你唯一需要知道的就是如何使用它。
我该如何使用它?
这就是本文的工作^-^ 。
1,下载opencv
首先到opencv官网下载win平台的opencv,解压后你可以看到下面两个文件夹——build和sources,build是官方已经为我们编译好的可以直接使用的,而sources中是opencv的源码,仅供高级玩家尝试。
下载下来后可以大致浏览一下build文件夹下的内容:
粗略一看就看到了熟悉的x86与x64(32位用和64位用),还有vc11和vc12,虽然以前没见过但大致也可以猜出vc11和vc12是指自己的VS中vc版本,我们可以根据自己的系统与vs版本来选择。
2.配置环境变量
程序中的可执行文件,必须添加到系统环境变量PATH中才能被系统识别。这就类似一所房子,你必须登记到你的名下,才能使用它。opencv也是一样,它在某些目录中提供了一些可执行文件,所以我们必须将这个目录添加到系统环境变量中。
比如说我的可执行文件目录是E:\opencv\build\x64\vc12\bin
配置如下:
3.配置VS工程
在VS中新建一个win32 application的项目(略)。
3.1 配置头文件位置
当你在自己的代码中使用了opencv中的类或函数时,编译器并不知道这是个怎样的物体有什么功能。这就需要我们引用对应的头文件,因为在对应的头文件中有关于这个物体的描述,这样程序才能正确编译。然而这些头文件在哪里呢?我们需要告诉编译器。
比如我的头文件目录是:
E:\opencv\build\include
E:\opencv\build\include\opencv
E:\opencv\build\include\opencv2
将其配置到下面的“包含目录”中:
3.2 配置库文件位置与指定库文件
include中的头文件,只能大致的描绘opencv中的物体是怎样的有什么功能。但具体的,实现的,可运行的二进制代码全在库文件中,也就是lib文件中。只有这些具体实现的二进制代码链接到你的二进制代码中,程序才能正常工作。然而这些库文件在哪里呢?我们需要告诉编译器。
先配置库文件位置:
比如我的库文件位置是 E:\opencv\build\x64\vc12\lib
将其配置到下面的“库目录”中:
然后指定库文件:
opencv_calib3d2413.lib
opencv_calib3d2413d.lib
opencv_contrib2413.lib
opencv_contrib2413d.lib
opencv_core2413.lib
opencv_core2413d.lib
opencv_features2d2413.lib
opencv_features2d2413d.lib
opencv_flann2413.lib
opencv_flann2413d.lib
opencv_gpu2413.lib
opencv_gpu2413d.lib
opencv_highgui2413.lib
opencv_highgui2413d.lib
opencv_imgproc2413.lib
opencv_imgproc2413d.lib
opencv_legacy2413.lib
opencv_legacy2413d.lib
opencv_ml2413.lib
opencv_ml2413d.lib
opencv_nonfree2413.lib
opencv_nonfree2413d.lib
opencv_objdetect2413.lib
opencv_objdetect2413d.lib
opencv_ocl2413.lib
opencv_ocl2413d.lib
opencv_photo2413.lib
opencv_photo2413d.lib
opencv_stitching2413.lib
opencv_stitching2413d.lib
opencv_superres2413.lib
opencv_superres2413d.lib
opencv_ts2413.lib
opencv_ts2413d.lib
opencv_video2413.lib
opencv_video2413d.lib
opencv_videostab2413.lib
opencv_videostab2413d.lib
其实这就是库文件目录下的所有库文件,你可以用cmd进入对应文件夹下,用“dir /b”命令来列出所有lib文件,然后复制到下面的“附加依赖项”中:
4.测试opencv
我们简单的测试一下opencv打开一张图片并显示,代码如下:
1 //读取图片并显示 2 #include "stdafx.h" 3 #include<iostream> 4 #include <opencv2/core/core.hpp> 5 #include <opencv2/highgui/highgui.hpp> 6 using namespace cv; 7 int main() 8 { 9 Mat img = imread("D:\\test.jpg"); 10 namedWindow("测试opencv"); 11 imshow("测试opencv", img); 12 cvWaitKey(6000); 13 }
使用的图片如下(将图片保存到D盘根目录,并改名为test,即与程序中的一致):
有了数据,有了程序,我们就可以运行了,但是千万别忽略了这个:
运行效果(略)。
TIP:【VS2013中如何解决error C4996: 'fopen'问题】请参考【http://jingyan.baidu.com/article/ce436649fd61543773afd32e.html】