在VS中配置并测试opencv
2016-06-15 00:22
204 查看
什么是opencv?
opencv是一个计算机视觉库。它目前有两个分支2.4.X和3.X,2.4.X版本是经典版本,网上的教程资源大多是关于它的,所以推荐使用2.4.X。它能帮我做什么?
这意味着你可以在自己的程序中使用计算机视觉相关功能,但不必关注具体实现。就像你使用电脑,但并不用关注电脑内部的原理。你唯一需要知道的就是如何使用它。我该如何使用它?
这就是本文的工作^-^ 。1,下载opencv
首先到opencv官网下载win平台的opencv,解压后你可以看到下面两个文件夹——build和sources,build是官方已经为我们编译好的可以直接使用的,而sources中是opencv的源码,仅供高级玩家尝试。![](https://images2015.cnblogs.com/blog/753080/201606/753080-20160614221429010-769226102.jpg)
下载下来后可以大致浏览一下build文件夹下的内容:
![](https://images2015.cnblogs.com/blog/753080/201606/753080-20160614222106729-80488648.jpg)
![](https://images2015.cnblogs.com/blog/753080/201606/753080-20160614222122417-992965107.jpg)
粗略一看就看到了熟悉的x86与x64(32位用和64位用),还有vc11和vc12,虽然以前没见过但大致也可以猜出vc11和vc12是指自己的VS中vc版本,我们可以根据自己的系统与vs版本来选择。
2.配置环境变量
程序中的可执行文件,必须添加到系统环境变量PATH中才能被系统识别。这就类似一所房子,你必须登记到你的名下,才能使用它。opencv也是一样,它在某些目录中提供了一些可执行文件,所以我们必须将这个目录添加到系统环境变量中。比如说我的可执行文件目录是E:\opencv\build\x64\vc12\bin
配置如下:
![](https://images2015.cnblogs.com/blog/753080/201606/753080-20160614232546573-1344347488.jpg)
3.配置VS工程
在VS中新建一个win32 application的项目(略)。3.1 配置头文件位置
当你在自己的代码中使用了opencv中的类或函数时,编译器并不知道这是个怎样的物体有什么功能。这就需要我们引用对应的头文件,因为在对应的头文件中有关于这个物体的描述,这样程序才能正确编译。然而这些头文件在哪里呢?我们需要告诉编译器。比如我的头文件目录是:
E:\opencv\build\include
E:\opencv\build\include\opencv
E:\opencv\build\include\opencv2
将其配置到下面的“包含目录”中:
![](https://images2015.cnblogs.com/blog/753080/201606/753080-20160614231527213-432116893.jpg)
3.2 配置库文件位置与指定库文件
include中的头文件,只能大致的描绘opencv中的物体是怎样的有什么功能。但具体的,实现的,可运行的二进制代码全在库文件中,也就是lib文件中。只有这些具体实现的二进制代码链接到你的二进制代码中,程序才能正常工作。然而这些库文件在哪里呢?我们需要告诉编译器。先配置库文件位置:
比如我的库文件位置是 E:\opencv\build\x64\vc12\lib
将其配置到下面的“库目录”中:
![](https://images2015.cnblogs.com/blog/753080/201606/753080-20160614231527213-432116893.jpg)
然后指定库文件:
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文件,然后复制到下面的“附加依赖项”中:
![](https://images2015.cnblogs.com/blog/753080/201606/753080-20160614230708042-397590027.jpg)
4.测试opencv
我们简单的测试一下opencv打开一张图片并显示,代码如下://读取图片并显示 #include "stdafx.h" #include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main() { Mat img = imread("D:\\test.jpg"); namedWindow("测试opencv"); imshow("测试opencv", img); cvWaitKey(6000); }
使用的图片如下(将图片保存到D盘根目录,并改名为test,即与程序中的一致):
![](https://images2015.cnblogs.com/blog/753080/201606/753080-20160614223816495-1548216342.jpg)
有了数据,有了程序,我们就可以运行了,但是千万别忽略了这个:
![](https://images2015.cnblogs.com/blog/753080/201606/753080-20160614224053573-595313065.jpg)
运行效果(略)。
TIP:【VS2013中如何解决error C4996: 'fopen'问题】请参考【http://jingyan.baidu.com/article/ce436649fd61543773afd32e.html】
相关文章推荐
- PopupWindow和Fragment的使用
- shell中的流程控制
- hello world程序执行过程
- 一种可行的云服务架构实现
- hadoop中map和reduce的数量设置
- shell编程-IF语法
- hadoop版本比较
- Hadoop源码解析之: TextInputFormat如何处理跨split的行
- Hadoop RPC机制总结
- HBase Shell常用命令
- Hadoop目前只是“穷人的ETL”
- CentOS下expect安装
- hadoop中map和reduce的数量设置
- [源码分析][Linux]内核工具Sparse
- 我的架构经验
- shell编程-IF语法
- Linux下scp和rsync的使用
- hadoop版本比较
- Hadoop源码解析之: TextInputFormat如何处理跨split的行
- Hadoop RPC机制总结