资源描述
捣鼓了一周,终于有点明白OPEN CV了,也终于弄懂了第一个程序,特写点做留念。OPEN CV其英文名字就叫OPEN COMPUTER VISION LIBRARY,顾名思义,就是开源计算机视觉库。何为计算机视觉,即将图像或视频转换成一种策略或一种新的表达方式在做处理,例如将图片转换成某种信号,然后在处理这种信号。学习一个东西开头很困难,我不知道我还能不能坚持下去继续学习,但愿可以坚持,所以有网友戏称,“学习一个新的东西时,有一半人是放弃在开头的”。OPEN CV是利用VISUANL 的,开始不知道这两个软件怎么连接在一起,这就郁闷了好几天,懂了才知道,OPENCV就是一个用做信号,图像等方面检测处理的C语言库,只要我们把库添加到VISUAL 中便可搞定。然后我们用VISUAL 做我们所需要的分析处理。
这是我第一个弄懂的例子,做点随笔:
#include”highgui.h”
Void main(){
IplImage *img=cvLoadImage(“D:\\02.jpg”);
cvNamedWindow(“example1”,CV_WINDOW_AUTOSIZE);
cvShowImage(“example1”,img);
cvWaitkey(0);
cvReleaseImage(&img);
cvDestroyWindow(“example1”);
}
其实这个例子很简单,就是调用显示一张图片了,但是我们从写的程序中可以看出,其中基本上不是我们上课时学的C,这个简单的程序中包含了指针,结构体,在实际应用中更多的是灵活使用这些东西,如果学习C是指针,结构体等没有学好,别说做了,理解都有难度。现在一句一句根据我的理解做解释:
#include”highgui.h”
这句当然是包含头文件了,highgui.h中包含图像处理,显示等方面的函数。
IplImage *img=cvLoadImage(“D:\\02.jpg”);
该功能是将显示的图像加载至内存,cvLoadImage();执行后返回的是一个指针,此指针指向一块描述该图片属性信息的结构体。IplImage为一个结构体,专门用在图像的处理。我们也可以看下IplImage的数据结构 其实他是这样定义的:
Typedef struct_IplImage{
Int size;
Int id;
Int nChannels;
Int alphaChannel;
Int depth;
………….
}IplImage;
由于其中包含的元素太多,输入太麻烦,就简单写了几个,可以看见IplImage是结构体,并且怎么定义的。
cvNamedWindow(“example1”,CV_WINDOW_AUTOSIZE);
作用在屏幕上创建一个窗口,将被显示的图片包含在该窗口中,函数的第一个参数指定了该创建窗口的标题,第二个参数定义了窗口的属性,CV_WINDOW_AUTOSIZE表示窗口的大小随着图像的大小自动的缩放,如果此处该为0,则窗口的大小固定,不会随图片的大小缩放。
cvShowImage(“example1”,img);
在创建好的窗口中显示图像,第一个参数设定在你那个已经存在的窗口中显示图片,第二个参数为一个指针。
cvWaitkey(0);
是程序暂停,等待用户触发一个按键操作,如果其中的参数值设定为正数时,程序暂停该正数个毫秒单位。这里我们也可以尝试,如程序写成:
Char c=cvWaitKey(0);
If(c==27){break;}
意思是说当有ESC键按下时推出,(27为ESC的ASCII码)
cvReleaseImage(&img);
图片加载完成后,我们释放该图片所分配的内存。
cvDestroyWindow(“example1”);
释放为创建窗口分配的内存。
从学的开始养成良好的习惯,养成释放资源的好习惯总是有好处的。
OK,搞定了第一个简单的程序,我们不等止步不前,下一个目标是显示一段视屏。希望我还能坚持下去,为了以后能有饭吃,努力!
展开阅读全文