Opencv视频教程分析.ppt
《Opencv视频教程分析.ppt》由会员分享,可在线阅读,更多相关《Opencv视频教程分析.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Opencv结构ncxcorencvnMachine Learning(ML)nHighGUIcxcoren基础结构:CvPoint,CvSize,CvScalar等n数组操作:cvCreateImage,cvCreateMat等n动态结构:CvMemStorage,CvMemBlock等n绘图函数:cvLine,cvRectangle等n数据保存和运行时类型信息:CvFileStorage,cvOpenFileStorage等n错误处理和系统函数:cvGetErrStatus,cvAlloc,cvFree等cvn图像处理:cvSobel,cvCanny等n结构分析:ContourArea等n
2、运动分析与目标跟踪:cvMeanShift等n模式识别:CvHaarFeaturen摄像头定标与三维重建:cvCalibrateCMachine Learning(ML)n包含许多聚类、分类和数据分析函数。如Bayes分类器,K近邻算法,支持向量机,决策树,神经网络等等。HighGUIn图像界面函数:cvNamedWindown读图像和保存图像:cvLoadImage,cvSaveImagen读视频和写视频:CvCreateFileCapture等cvcamn摄像机接口,在Opencv1.0以后的版本中已经被移除cvauxn该模块中一般存放一些即将被淘汰的算法和函数(如基于嵌入式隐马尔科夫的人
3、脸识别算法),还包含一些实验性的算法和函数(前景检测,背景剔除等)Opencv的结构Opencv视频教程显示图像第一个程序:显示图像基于基于Opencv,我们可以读取各种图像文件,我们可以读取各种图像文件,视频文件,还可以读取摄像头。这些功能视频文件,还可以读取摄像头。这些功能是是Opencv开发包中开发包中HighGUI工具集的一部工具集的一部分。下面,我们就使用其中的一些功能来分。下面,我们就使用其中的一些功能来实现如何显示一幅图像。实现如何显示一幅图像。显示图像代码显示图像代码n#include highgui.hnint main(int argc, char* argv)nnIplI
4、mage* src = cvLoadImage(F:psbCA2V1GZ7.jpg , 1);ncvNamedWindow(show_image);ncvShowImage(show_image,src);ncvWaitKey(0);nreturn 0;cvLoadImage(char* filename,int flags=CV_LOAD_IMAGE_COLOR)nFilename:图像所在路径nFlags:n/* 图像颜色不变 */n#define CV_LOAD_IMAGE_UNCHANGED -1n/*灰度图像(单通道) */n#define CV_LOAD_IMAGE_GRAYSCA
5、LE 0n/* 彩色图像(3通道图像) */n#define CV_LOAD_IMAGE_COLOR cvLoadImage参数说明nFlags:n/*则输入图像格式可以为8位无符号,16位无符号,32位有符号或者32位浮点型 */ n#define CV_LOAD_IMAGE_ANYDEPTH 2n/* 保持原样 */n#define CV_LOAD_IMAGE_ANYCOLOR cvLoadImage参数说明n如果想要载入最真实的图像,选择CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR n如果输入有冲突的标志,将采用较小的数字值。比如CV_L
6、OAD_IMAGE_GRAYSCALE | CV_LOAD_IMAGE_COLOR将载入单通道图。 cvLoadImage的功能n通过文件名确定被加载图像的格式,并且该函数在内部分配图像数据结构所需要的内存空间。n支持的图像格式:BMP,DIB,JPEG,JPE,PNG,PBM,PGM,PPM,SR,RAS,TIFF。Int cvNamedWindow(char*name,int flagsnname:窗口的标志。如果已经有同名窗口,则该函数什么也不干。nFlags:CV_WINDOW_AUTOSIZE ,会根据图像大小自动调整窗口大小。如果是0,则窗口大小不变。cvShowImage(cha
7、r* name,IplImage* dst)功能:在指定窗口上显示图像。nname:窗口的标志。这个标志是cvNamedWindow函数设定的。ndst:被显示的图像。Int cvWaitKey(int key)nKey:如果key的值是大于0的数,那么该函数的功能是,在此处暂停key毫秒。如果是小于等于0的数,那么,该函数是在等待用户的按键输入。cvReleaseImage(IplImage* src)n释放图像空间。cvDestroyWindow(char* name)n注销一个窗口。同时释放为该窗口所分配的所有内存(包括窗口内部的图像内存缓冲区)Opencv视频教程Opencv读取视频O
8、pencv读取视频代码n#include highgui.hnint main(int argc, char* argv)nncvNamedWindow(avi);nCvCapture* capture = cvCreateFileCapture(“视频文件路径视频文件路径);nIplImage* frame;nwhile(1)nnframe = cvQueryFrame(capture);nif(!frame)break;ncvShowImage(avi,frame);nchar c = cvWaitKey(33);nif(c=27)nbreak;nncvReleaseCapture(&ca
9、pture);ncvDestroyWindow(avi);nreturn 0;结构体结构体CvCapturenCvCapture 是一个结构体,用来保存图像捕获所需要的信息。是一个结构体,用来保存图像捕获所需要的信息。 opencv提供两种方式从外部捕获图像提供两种方式从外部捕获图像n一种是从摄像头中,一种是从摄像头中,n一种是通过解码视频得到图像。一种是通过解码视频得到图像。 两种方式都必须从第一帧开始一帧一帧的按顺序获取,因此每获取一两种方式都必须从第一帧开始一帧一帧的按顺序获取,因此每获取一帧后都要保存相应的状态和参数。帧后都要保存相应的状态和参数。 比如从视频文件中获取,需要保存视频文
10、件的文件名,相应的解码器比如从视频文件中获取,需要保存视频文件的文件名,相应的解码器类型,下一次如果要获取将需要解码哪一帧等。类型,下一次如果要获取将需要解码哪一帧等。 这些信息都保存在这些信息都保存在CvCapture结构中,每获取一帧后,这些信息都将被更新,获取下一结构中,每获取一帧后,这些信息都将被更新,获取下一帧需要将新信息传给获取的帧需要将新信息传给获取的api接口接口cvCreateFileCapture(char*name)n通过输入要读取的avi文件的路径,然后,该函数返回一个指向CvCapture结构体的指针。cvQueryFrame(capture)n输入一个CvCaptu
11、re类型的指针,该函数主要功能是将视频文件的下一帧加载到内存。与cvLoadImage的不同之处是,该函数不重新分配内存空间。C=cvWaitKey(33)n当前帧被显示后,等待33毫秒。如果用户触发了一个按键,c会被设置成这个按键的ASCII码,否则会被设置成-1。ncvWaitKey(33)在此处的另外一个作用是,控制帧率。cvReleaseCapture(&capture)释放为CvCapture结构体开辟的内存空间关闭打开的AVI文件相关的文件句柄读取摄像头n只需把cvCreateFileCapture改成改成cvCreateCameraCapture即可。即可。该函数的输入参数是一个
12、ID号,只有存在多个摄像头时才起作用。当ID=-1时,表示随机选择一个。HighGUI做了很多工作,使得摄像机图像序列像一个视频文件一样。在第4章,会有更详细的介绍。总结常见问题(1)视频文件路径没写对(2)没有安装解码器(3)如果使用的是Opencv2.0或更高版本,那么,能否正确加载opencv_ffmpeg210.dll(4)尽管是AVI文件,但也可能使用了某种codec,例如:MJPEG Decompressor。 需要把它转换OpenCV支持的AVI文件. OpenCV支持的AVI。例如使用狸窝全能视频转换器,在预置方案处,选择AVI-Audio_Video Interleaved(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Opencv 视频教程 分析
限制150内