本科时对于Opencv这个名词只闻其名,一直不识庐山面目,也没想过以后有一天会用到它。近日由于课题原因,我只能开始零基础学习了,不禁感慨当初自己把时间都花到哪上去了,渣到如此境界~~。调整下心态,长呼一口气,决定不当愤青了,从眼前做起,把该学的东东一步步都给搞定吧!
一) opencv概述
1)OpenCV的全称是:OpenSource Computer Vision Library。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
2)为什么有OpenCV
计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:
1.研究代码(慢,不稳定,独立并与其他库不兼容)
2.耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)
3.依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状。而标准的API将简化计算机视觉程序和解决方案的开发。OpenCV致力于成为这样的标准API。
OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated PerformancePrimitives)得到更快的处理速度。
3)应用领域
1、人机互动 2、物体识别 3、图象分割 4、人脸识别 5、动作识别
6、运动跟踪 7、机器人 8、运动分析 9、机器视觉 10、结构分析
二) opencv安装(引自别处)
开发环境:VS2008
Opencv安装包:opencv2.3.1
Opencv下载地址:<span "="" style="word-wrap: break-word">http://www.opencv.org.cn/index.php/Download
1) 把opencv2.3.1解压到C盘,C:\opencv2.3.1
2) 设置用户变量。计算机>属性>高级系统设置>环境变量>新建,新建一个用户变量,如变量名:Path,变量值:C:\opencv2.3.1\build\x86\vc9\bin
变量值有如下选择:
32位VS2008:C:\opencv2.3.1\build\x86\vc9\bin
64位VS2008:C:\opencv2.3.1\build\x64\vc9\bin
32位VS2010:C:\opencv2.3.1\build\x86\vc10\bin
64位VS2010:C:\opencv2.3.1\build\x64\vc10\bin
3) 设置编译路径。
VS2008:工具>选项>VC++目录>平台,32位选Win32,64位则选x64,接着“在显示以下内容的目录”下拉框选择“包含文件”,点击“新行”图标,分别新建3条路径:
C:\opencv\build\include
C:\opencv\build\include\opencv
C:\opencv\build\include\opencv2
然后选择“库文件”,新建1条路径:
32位:C:\opencv\build\x86\vc9\lib
64位:C:\opencv\build\x64\vc9\lib
4) 注销电脑,设置库文件。重新打开VS2008新建一个c++项目(每新建一个项目都要进行以下设置才能编译Opencv里的函数),VS2010用回上一步所建的项目。
VS2008:在“解决方案资源管理器”窗口中,右单击项目名,选择“属性”>配置属性>链接器>输入,接着在“配置”下拉框中,选择“Debug”,在“附加依赖项”那栏点击右边的“编辑”按钮,复制下面的库文件名到上方空白处:
opencv_calib3d231d.lib
opencv_contrib231d.lib
opencv_core231d.lib
opencv_features2d231d.lib
opencv_flann231d.lib
opencv_gpu231d.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_legacy231d.lib
opencv_ml231d.lib
opencv_objdetect231d.lib
opencv_ts231d.lib
opencv_video231d.lib
(可根据实际需要删减)
然后,在“配置”下拉框中选择“Release”,照上面的操作,复制下面的库文件名到上方的空白处:
opencv_calib3d231.lib
opencv_contrib231.lib
opencv_core231.lib
opencv_features2d231.lib
opencv_flann231.lib
opencv_gpu231.lib
opencv_highgui231.lib
opencv_imgproc231.lib
opencv_legacy231.lib
opencv_ml231.lib
opencv_objdetect231.lib
opencv_ts231.lib
opencv_video231.lib
(可根据实际需要删减)
到此Opencv2.3.1配置完成,下面编译运行程序。
验证程序:
/***********************************************************************
* OpenCV 2.3.1 测试例程
* 于仕琪提供
***********************************************************************/
//#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
const char* imagename = "lena.jpg";
//从文件中读入图像
Mat img = imread(imagename);
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not loadimage %s\n", imagename);
return -1;
}
//显示图像
imshow("image", img);
//此函数等待按键,按键盘任意键就返回
waitKey();
return ;
}
加一个小插曲,安装完成后,我调试一个工程项目时,提示缺少tbb.dll和tbb_debug.dll。
解决方案:
1)网上下载tbb.dll和tbb_debug.dll
2)将tbb.dll放在system32下,将tbb_debug.dll放在\opencv2.3.1\build\x86\vc9\bin里边。搞定~!