这是不是一段程序,而是我的一个梦,是我学习该专业的初衷。SAO的世界一定存在着,就在哪个梦里,找到一个它的入口。也许是冲破云层后的别有洞天,也许是旧日麦田里的圣克拉拉。只需要有人将这个梦唤醒。
本段学习内容将为手势识别做基础,两个月后加入《数字图像处理》。第一个项目实践为SAO Utils启动器菜单栏手势识别。SAO的世界一定存在着,需要有人将它唤醒,这是我的初衷和我的梦。
学习方法采用书中所介绍一周两章,用六个星期读到1-12章,然后开始项目,着手解决具体问题,并阅读其他教材和相关论文。
OpenCV是一个开源的计算机视觉库,采用C/C++编写,可以运行在Windows/Linux/Mac等操作系统上,还提供了Python/Ruby/MATLAB等语言的接口,OpenCV的设计目标是执行速度尽量快,主要关注实时应用。它采用优化的C代码编写,能够充分利用多核处理器的优势。
在计算机视觉系统中,计算机接收到的是来自摄像机或磁盘文件的一个数值矩阵,矩阵中的每个数值都有很大的噪声成分(update until finish this program)
Windows版本的Opencv只包含release版的库,不包含debug版的库,如果需要,则需要重新编译debug模式的OpenCV库。
第二章 OpenCV入门
1.开始准备
在VS开发环境中新建一个项目,配置好各项设置,以使OpenCV开发包中的库能被正确链接,并保证编译器的预处理器能搜索到include目录下的各个头文件。
2.显示图像
OpenCV开发包提供了读取各种类型的图像文件、视频内容以及摄像机输入的功能。这些功能是OpenCV开发包中所包含的HighGUI工具集的一部分。
//从磁盘中加载并在屏幕上显示一幅图像的简单OpenCV程序
#include "highgui.h"
int main( int argc, char** argv )
{
IplImage* img = cvLoadImage( argv[1] ); //将图像文件加载至内存
cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE );
cvShowImage("Example1", img );
cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow("Example1");
}
以上程序编译后,可以在命令行模式下通过输入一个参数执行它,执行时,该程序向内存加载一幅图像,并将该图像显示在屏幕上,直至按下键盘上的任意一个键后才退出窗口关闭程序。
cvLoadImage()函数是一个高层调用接口,它通过文件名确定被加载文件的格式;并且该函数将自动分配图像数据结构所需要的内存。cvLoadImage()可读绝大多数格式类型的图像文件,该函数执行完后返回一个指针,此指针指向一块为描述该图像文件的数据结构(IplImage)而分配的内存块。IplImage结构体将是使用OpenCV时最常用的数据结构,可处理单通道,多通道,整型的,浮点型的等所有类型的图像文件