ex2-1显示一张图片(简单)
IplImage* img = cvLoadImage( argv[1] );
功能:将图像文件加载至内存
返回:一个指针,指向该图像文件的数据结构IplImage
cvNameWindow( "Example1", CV_WINDOW_AUTOSIZE );
功能:在屏幕上创建一个窗口
参数:第一个参数指定该窗口的标题,第二个参数定义窗口属性,0或CV_WINDOW_AUTOSIZE,自动拉伸缩放否
cvShowImage( "Example1", img );
功能:在窗口中显示图像
cvWaitKey(0);
功能:使程序暂停
参数:该时长为整数个毫秒单位,0或负数则一直等待用户触发按键操作
返回:触发按键的ASCII码,否则返回 -1
cvReleaseImage( &img );
功能:释放为该图像文件所分配的内存,img=NULL
cvDestroyWindow( "Example" );
功能:销毁显示图像文件的窗口
ex2-2显示一段视频(简单)
CvCapture* capture = cvCreateFileCapture( argv[1] );
功能:读入AVI文件,只分配一帧的空间,每次调用覆盖原来的数据
返回:一个指向CvCapture结构的指针
功能:填充或更新CvCapture结构,下一帧视频文件载入内存,不必释放内存,内存在CvCapture结构中
参数:一个CvCapture结构的指针
返回:一个对应当前帧的指针
cvReleaseCapture( &capture );
功能:释放CvCapture结构的内存空间
ex2-3视频加滚动条(有难度)
设置项目可以带参数运行时,此时不必再把arg[0]输入,直接输入test.avi即可,且把该视频文件放在和项目属性表一层的文件夹中即可。
功能:设置CvCapture对象的各种属性
参数:CV_CAP_PROP_POS_FRAMES表示以帧数来设置读入位置,视频长度比例则是AVI_RATIO代替FRAMES,传入新的滚动条位置
cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_COUNT );
功能:查询CvCapture对象的各种数据
参数:CV_CAP_PROP_FRAME_COUNT,CV_CAP_PROP_POS_FRAMES,CV_CAP_PROP_FPS
返回:返回视频的总帧数,返回当前帧数,帧率
cvCreateTrackbar( “Position”, “Example3”, &g_slider_position, frames, onTrackbarSlide );
功能:创建滚动条
参数:滚动条名称,所属窗口,对象,滚动最大值,滚动条被拖动时触发的回调函数
ex2-4载入图像平滑处理(简单)
cvCreateImage( cvGetSize(image), IPL_DEPTH_8U, 3 );//当前图像是3通道,每个通道8位,图像大小同image
功能:分配自己的图像结构空间
参数:CvSize结构体,各通道每个像素点的数据类型,通道总数
cvGetSize(image);
cvSize( img->width/2,img->height/2 );
功能:得到CvSize结构
cvSmooth( image, out, CV_GAUSSIAN, 5,5 );
功能:平滑处理,每个像素周围5*5区域进行高斯平滑处理
ex2-5缩放图像(有点bug)
IPL_GAUSSIAN_5x5应该改为CV_GAUSSIAN_5x5,否则找不到
ex2-6边缘检测(简单)
cvCvtColor(img_rgb, img_gry ,CV_BGR2GRAY);cvCanny( in, out, lowThresh, highThresh, aperture );
ex2-7,2-8组合操作(简单)
ex2-9从摄像设备读入图像(困难)
摄像头很难打开,要更新驱动程序,各种方法都试过了,看来win7对于cvCreateCameraCapture(0);和cvCaptureFromCAM(0);都不支持啊不过还是有其他的方法可以打开摄像头,现在的知识还不够,可以用mat类的东西。
ex2-10写入AVI(简单)
CvVideoWriter* writer = cvCreateVideoWriter( argv[2], CV_FOURCC('D','X','5','0'), fps, size );功能:新建视频文件
参数:指定新建视频文件的名称,视频压缩的编码格式DX50而Opencv用宏CV_FOURCC指定编码格式,帧率,图像大小
总而言之
从这10个例子可以粗略了解opencv,不必花太多的时间,特别是第9个例子,由于硬件的关系走很多弯路都是没有帮助的,后面会学到更厉害的东西,不要停下来。需要源码的同学可以在下方评论,我比较懒,就先不上传各个例子的源码了。