opencv学习(一)书本《学习Opencv》(中文版)的第二章的10个入门样例的分析

来源:互联网 发布:种植牙费用 知乎 编辑:程序博客网 时间:2024/04/30 12:49

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结构的指针


frame = cvQueryFrame( capture );

功能:填充或更新CvCapture结构,下一帧视频文件载入内存,不必释放内存,内存在CvCapture结构中

参数:一个CvCapture结构的指针

返回:一个对应当前帧的指针


cvReleaseCapture( &capture );

功能:释放CvCapture结构的内存空间


ex2-3视频加滚动条(有难度)

设置项目可以带参数运行时,此时不必再把arg[0]输入,直接输入test.avi即可,且把该视频文件放在和项目属性表一层的文件夹中即可。

cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, pos );

功能:设置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个例子,由于硬件的关系走很多弯路都是没有帮助的,后面会学到更厉害的东西,不要停下来。

需要源码的同学可以在下方评论,我比较懒,就先不上传各个例子的源码了。

0 0
原创粉丝点击