《最新学习材料OpenCVPPT课件.ppt》由会员分享,可在线阅读,更多相关《最新学习材料OpenCVPPT课件.ppt(117页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学习材料学习材料OpenCV本科生核心专业课程:数字媒体技术基础(04831800)第一部分oOpenCV概述o基础结构与操作o基本OpenCV程序与示例o注:本讲义中部分代码来自OpenCV样例,部分代码来自OpenCV教程基础篇,部分代码则从网上收集。2本科生核心专业课程:数字媒体技术基础(04831800)本科生核心专业课程:数字媒体技术基础(04831800)本科生核心专业课程:数字媒体技术基础(04831800)本科生核心专业课程:数字媒体技术基础(04831800)本科生核心专业课程:数字媒体技术基础(04831800)本科生核心专业课程:数字媒体技术基础(04831800)本科生
2、核心专业课程:数字媒体技术基础(04831800)Configuring MSVS.net 2k3In order to build projects using OpenCV the required libraries and directives must be included in the projects propertiesRight Click the name of the project and select Properties(Tutorial in this case)Open the Properties Pane本科生核心专业课程:数字媒体技术基础(0483180
3、0)Configuring MSVS.net 2k3Under the C/C+tab select GeneralSet Additional Include DirectivesSelect the Additional Include DirectivesAdd the full path to each of the folders which contain.h files required to use OpenCVBe sure to include trailing C:Program FilesOpenCVcvauxincludeC:Program FilesOpenCVcx
4、coreincludeC:Program FilesOpenCVcvincludeC:Program FilesOpenCVotherlibshighguiC:Program FilesOpenCVotherlibscvcaminclude Utilized Directives本科生核心专业课程:数字媒体技术基础(04831800)Configuring MSVS.net 2k3Under the Linker tab select InputSet Additional DependenciesSelect the Additional DependenciesC:Program File
5、sOpenCVlibcv.libC:Program FilesOpenCVlibcvaux.libC:Program FilesOpenCVlibcxcore.libC:Program FilesOpenCVlibcvcam.libC:Program FilesOpenCVlibhighgui.libUtilized DependenciesAdd the full path to each of the.lib files required to use OpenCVBe sure to keep the paths in quotes本科生核心专业课程:数字媒体技术基础(04831800)
6、Testing MSVS.net 2k3Now that the environment is configured it would be a good idea to test it to make sure that a program will correctly build and run.#include#include/*This will pop up a small box with Hello World as the text.*/int main(int argc,char*argv)/declare for the height and width of the im
7、age int height=320;int width=240;/specify the point to place the text CvPoint pt=cvPoint(height/4,width/2);/Create an 8 bit,3 plane image IplImage*hw=cvCreateImage(cvSize(height,width),8,3);/initialize the font CvFont font;cvInitFont(&font,CV_FONT_HERSHEY_COMPLEX,1.0,1.0,0,1,CV_AA);/place the text o
8、n the image using the font cvPutText(hw,Hello World,pt,&font,CV_RGB(150,0,0);/create the window container cvNamedWindow(Hello World,0);/display the image in the container cvShowImage(Hello World,hw);/hold the output windows cvWaitKey(0);return 0;The enclosed code can be cut and pasted into the file
9、created in the project space to test OpenCVTesting the First Program本科生核心专业课程:数字媒体技术基础(04831800)Testing MSVS.net 2k3Output of ProgramThe program is built by selecting:Build-Build SolutionOr by pressing F7Building the ProgramThe program is run by selecting:Debug-Start|Start without DebuggingOr by pre
10、ssing F5 or-F5Running the Program本科生核心专业课程:数字媒体技术基础(04831800)OpenCV 编码样式指南o1、文件命名:有cv和cvaux库文件的命名必须服从于以下规则:n所有的CV库文件名前缀为cv n混合的C/C+接口头文件扩展名为.h n纯C+接口头文件扩展名为.hpp n实现文件扩展名为.cpp n为了与POSIX兼容,文件名都以小写字符组成14本科生核心专业课程:数字媒体技术基础(04831800)OpenCV 编码样式指南o2、文件结构n每个文件以BSD兼容的许可声明(模板在Contributors_BSD_Licsense.htm文件中
11、可以找到)开头;n一行最多90个字符,不包括行结束符 n不使用制表符 n缩进为4个空格符,所以制表符应该用1-4个空格替换(依据开始列确定)n头文件必须使用保护宏,防止文件被重复包含。n混合C/C+接口头文件用extern C 包含C语言定义。n为了使预编译头机制在Visual C+中工作正常,源文件必须在其它头文件前包含precomp.h头文件。15本科生核心专业课程:数字媒体技术基础(04831800)OpenCV 编码样式指南o3、命名约定nOpenCV中使用大小写混合样式来标识外部函数、数据类型和类方法。n宏全部使用大写字符,词间用下划线分隔。n所有的外部或内部名称,若在多个文件中可见
12、,则必须含有前缀:外部函数使用前缀cv 内部函数使用前缀Icv 数据结构(C结构体、枚举、联合体、类)使用前缀Cv 外部或某些内部宏使用前缀CV_ 内部宏使用前缀ICV_ 16本科生核心专业课程:数字媒体技术基础(04831800)OpenCV 编码样式指南o4、函数接口设计:为了保持库的一致性,以如下方式设计接口非常重要。函数接口元素包括:功能 名称 返回值 参数类型 参数顺序 参数默认值 o函数功能必须定义良好并保持精简。函数应该容易镶入到使用其它OpenCV函数的不同处理过程。函数名称应该简单并能体现函数的功能。大多数函数名形式:cv17本科生核心专业课程:数字媒体技术基础(048318
13、00)A Simple OpenCV Program1.#include 2.#include 3.#include 4.int main(int argc,char*argv)5.CvPoint center;6.double scale=-3;7.IplImage*image=argc=2?cvLoadImage(argv1):0;8.if(!image)return-1;9.center=cvPoint(image-width/2,image-height/2);10.for(int i=0;iheight;i+)11.for(int j=0;jwidth;j+)12.double dx
14、=(double)(j-center.x)/center.x;13.double dy=(double)(i-center.y)/center.y;14.double weight=exp(dx*dx+dy*dy)*scale);15.uchar*ptr=&CV_IMAGE_ELEM(image,uchar,i,j*3);16.ptr0=cvRound(ptr0*weight);17.ptr1=cvRound(ptr1*weight);18.ptr2=cvRound(ptr2*weight);19.cvSaveImage(copy.png,image);20.cvNamedWindow(tes
15、t,1);21.cvShowImage(test,image);22.cvWaitKey();23.return 0;18本科生核心专业课程:数字媒体技术基础(04831800)基本数据结构o点:CvPoint、CvPoint2D32f、CvPoint3D32f o矩形框大小:CvSize、CvSize2D32f o矩形框:CvRect o可以存放1-4个数值的数组:CvScalar o定义迭代算法的终止规则:CvTermCriteria o矩阵:CvMat、CvMatND、CvSparseMat oIPL图像头部:IplImage o定义不确定的数组:CvArr(仅作函数参数)19本科生核心
16、专业课程:数字媒体技术基础(04831800)点数据结构oCvPoint 二维坐标系下的点,类型为整型 typedef struct CvPoint int x;/*X坐标,通常以0为基点*/int y;/*y坐标,通常以0为基点*/CvPoint;/*构造函数*/inline CvPoint cvPoint(int x,int y);/*从 CvPoint2D32f类型转换得来*/inline CvPoint cvPointFrom32f(CvPoint2D32f point)oCvPoint2D32f:二维坐标下的点,类型为浮点oCvPoint3D32f:三维坐标下的点,类型为浮点20本科
17、生核心专业课程:数字媒体技术基础(04831800)矩形框大小数据结构oCvSize 矩形框大小,以像素为精度 typedef struct CvSizeint width;/*矩形宽*/int height;/*矩形高*/CvSize;/*构造函数*/inline CvSize cvSize(int width,int height);oCvSize2D32f 21本科生核心专业课程:数字媒体技术基础(04831800)矩形框数据结构oCvRect 矩形框的偏移和大小 typedef struct CvRectint x;/*方形的最左角的x-坐标*/int y;/*方形的最上或者最下角的y
18、-坐标*/int width;/*宽*/int height;/*高*/CvRect;/*构造函数*/inline CvRect cvRect(int x,int y,int width,int height);22本科生核心专业课程:数字媒体技术基础(04831800)矩阵数据结构oCvMat 二维矩阵 typedef struct CvMat int type;/*CvMat 标识,元素类型和标记*/int step;/*以字节为单位的行数据长度*/int rows;/*行数*/int cols;/*列数*/int*refcount;/*数据引用计数*/unionuchar*ptr;sho
19、rt*s;int*i;float*fl;double*db;data;/*data 指针*/23本科生核心专业课程:数字媒体技术基础(04831800)矩阵数据结构oCvMatND:多维、多通道密集数组 oCvSparseMat:多维、多通道稀疏数组oCvArr:不确定数组24本科生核心专业课程:数字媒体技术基础(04831800)图像头数据oIplImage:IPL 图像头25本科生核心专业课程:数字媒体技术基础(04831800)图像头数据oIplImage:IPL 图像头typedef struct _IplImage int nSize;/*IplImage大小*/int ID;/*版
20、本(=0)*/int nChannels;/*大多数OPENCV函数支持1,2,3 或4 个通道*/int alphaChannel;/*被OpenCV忽略*/int depth;/*像素的位深度:IPL_DEPTH_8U,IPL_DEPTH_8S,IPL_DEPTH_16U,IPL_DEPTH_16S,IPL_DEPTH_32S,IPL_DEPTH_32F and IPL_DEPTH_64F 可支持*/char colorModel4;char channelSeq4;/*被OpenCV忽略*/int dataOrder;/*0-交叉存取颜色通道,1-分开的颜色通道.cvCreateImag
21、e只能创建交叉存取图像*/int origin;/*0-顶左结构,1-底左结构(BMP风格)*/int align;/*图像行排列(4 or 8).OpenCV 用widthStep 代替*/26本科生核心专业课程:数字媒体技术基础(04831800)int width;/*图像宽像素数*/int height;/*图像高像素数*/struct _IplROI*roi;/*图像感兴趣区域.当该值非空只对该区域进行处理*/struct _IplImage*maskROI;/*在 OpenCV中必须置NULL*/void*imageId;/*同上*/struct _IplTileInfo*tile
22、Info;/*同上*/int imageSize;/*图像数据大小,单位字节*/char*imageData;/*指向排列的图像数据*/int widthStep;/*排列的图像行大小,以字节为单位*/int BorderMode4;int BorderConst4;/*边际结束模式,被忽略*/char*imageDataOrigin;/*指针指向一个不同的图像数据结构,是为了纠正图像内存分配准备的*/IplImage;27本科生核心专业课程:数字媒体技术基础(04831800)图像头数据oIplImage结构来自于 Intel Image Processing Library。OpenCV
23、只支持其中的一个子集:nalphaChannel 在OpenCV中被忽略。ncolorModel 和channelSeq 被OpenCV忽略。ndataOrder 必须是IPL_DATA_ORDER_PIXEL(颜色通道是交叉存取),然而平面图像的被选择通道可以被处理,就像COI(感兴趣的通道)被设置过一样。nalign 是被OpenCV忽略的,而用 widthStep 去访问后继的图像行。n不支持maskROI。处理MASK的函数把他当作一个分离的参数。MASK在 OpenCV 里是 8-bit,然而在 IPL他是 1-bit。ntileInfo 不支持。nBorderMode和Border
24、Const是不支持的。nOpenCV处理ROI有不同的要求。要求原图像和目标图像的尺寸或 ROI的尺寸必须精确匹配。28本科生核心专业课程:数字媒体技术基础(04831800)基本OpenCV操作o矩阵的使用与操作oGUI命令o图像的使用与操作o视频的使用与操作本科生核心专业课程:数字媒体技术基础(04831800)矩阵的使用与操作(1)o创建矩阵 CreateMatCvMat*cvCreateMat(int rows,int cols,int type);nrows 矩阵行数。cols 矩阵列数。type 矩阵元素类型。通常以 CV_(S|U|F)C型式描述,例如:CV_8UC1 意思是一个
25、8-bit 无符号单通道矩阵,CV_32SC2 意思是一个32-bit 有符号二个通道的矩阵。n函数 cvCreateMat 为新的矩阵分配头和下面的数据,并且返回一个指向新创建的矩阵的指针。矩阵按行存贮。所有的行以4个字节对齐。o删除矩阵 ReleaseMat void cvReleaseMat(CvMat*mat);n例如:CvMat*M=cvCreateMat(4,4,CV_32FC1);cvReleaseMat(&M);30本科生核心专业课程:数字媒体技术基础(04831800)矩阵的使用与操作(2)o复制矩阵CloneMatCvMat*cvCloneMat(const CvMat*m
26、at);n例如:CvMat*M1=cvCreateMat(4,4,CV_32FC1);CvMat*M2;M2=cvCloneMat(M1);o初始化矩阵n方法1:用cvMat初始化 double a=1,2,3,4,5,6,7,8,9,10,11,12;CvMat Ma=cvMat(3,4,CV_64FC1,a);n方法2:用cvCreateMatHeader初始化 CvMat Ma;cvInitMatHeader(&Ma,3,4,CV_64FC1,a);o初始化单位矩阵nCvMat*M=cvCreateMat(4,4,CV_32FC1);cvSetIdentity(M);31本科生核心专业课
27、程:数字媒体技术基础(04831800)矩阵的使用与操作(3)o访问矩阵元素n(1)直接访问cvmSet(M,i,j,2,0);/Set M(i,j)t=cvmGet(M,i,j);/Get M(i,j)n(2)已知对齐方式的直接访问CvMat*M=cvCreateMat(4,4,CV_32FC1);int n=M-cols;float*data=M-data.fl;datai*n+j=3.0;/假设32位对齐n(3)未知对齐方式的直接访问CvMat*M=cvCreateMat(4,4,CV_32FC1);int step=M-step/sizeof(float);float*data=M-d
28、ata.fl;(data+i*step)j=3.0;n(4)直接访问一个已初始化的矩阵Mai*4+j=2.0;32本科生核心专业课程:数字媒体技术基础(04831800)矩阵的使用与操作(4)o矩阵间的操作CvMat*Ma,*Mb,*Mc;ncvAdd(Ma,Mb,Mc);/Ma+Mb-McncvSub(Ma,Mb,Mc);/Ma-Mb-McncvMatMul(Ma,Mb,Mc);/Ma*Mb-Mco矩阵元素间的操作ncvMul(Ma,Mb,Mc);/Ma.*Mb-McncvDiv(Ma,Mb,Mc);/Ma./Mb-McncvAddS(Ma,cvScalar(-10.0),Mc);/Ma.-
29、10-Mco单个矩阵的操作ncvTranspose(Ma,Mb);/transpose(Ma)-MbnCvScalar t=cvTrace(Ma);/trace(Ma)-t.val0ndouble d=cvDet(Ma);/det(Ma)-dncvInvert(Ma,Mb);/inv(Ma)-Mb33本科生核心专业课程:数字媒体技术基础(04831800)矩阵的使用与操作(5)o向量乘法假设Va,Vb,Vc均为n元素向量ndouble res=cvDotProduct(&Va,&Vb);/Va Vb-resncvCrossProduct(&Va,&Vb,&Vc);/Va Vb-Vco矩阵特征值
30、分解假设A,E均为n*n方阵,I为n元素向量ncvEigenVV(&A,&E,&I);oSVD 假设A,U,D,V均为n*n方阵ncvSVD(A,D,U,V,CV_SVD_U_T|CV_SVD_V_T);/A=UDVT标志使U和V以转置方式返回o非齐次线性系统的求解假设A为n*n方阵,x,b均为n元素向量ncvSolve(&A,&b,&x)34本科生核心专业课程:数字媒体技术基础(04831800)矩阵的使用与操作:示例(1)#include cv.h#include highgui.h#include void PrintMat(CvMat*A);/显示矩阵void Test_Multipl
31、y();/测试矩阵乘法void Test_DCT();/计算DCT变换int main()Test_Multiply();Test_DCT();return 0;35本科生核心专业课程:数字媒体技术基础(04831800)矩阵的使用与操作:示例(2)void PrintMat(CvMat*A)/显示矩阵int i,j;for(i=0;irows;i+)printf(n);switch(CV_MAT_DEPTH(A-type)case CV_32F:case CV_64F:for(j=0;jcols;j+)printf(%9.3f,(float)cvGetReal2D(A,i,j);break;
32、case CV_8U:case CV_16U:for(j=0;jcols;j+)printf(%6d,(int)cvGetReal2D(A,i,j);break;default:break;printf(n);36本科生核心专业课程:数字媒体技术基础(04831800)矩阵的使用与操作:示例(3)void Test_Multiply()/Test matrix multiply double a=1,2,3,4,5,6,7,8,9,10,11,12;double b=1,5,9,2,6,10,3,7,11,4,8,12;double c9;CvMat Ma,Mb,Mc;printf(n=Tes
33、t multiply=);cvInitMatHeader(&Ma,3,4,CV_64FC1,a,CV_AUTOSTEP);cvInitMatHeader(&Mb,4,3,CV_64FC1,b,CV_AUTOSTEP);cvInitMatHeader(&Mc,3,3,CV_64FC1,c,CV_AUTOSTEP);cvMatMulAdd(&Ma,&Mb,0,&Mc);PrintMat(&Ma);PrintMat(&Mb);PrintMat(&Mc);return;37本科生核心专业课程:数字媒体技术基础(04831800)矩阵的使用与操作:示例(4)void Test_DCT()/test 1-
34、d and 2-d dct transform float data=1,2,3,4,5,6,7,8;CvMat a;a=cvMat(2,4,CV_32FC1,data);printf(n=Test DCT=);printf(nOriginal matrix=);PrintMat(&a);cvDCT(&a,&a,CV_DXT_FORWARD);printf(n2-D DCT=);PrintMat(&a);cvDCT(&a,&a,CV_DXT_INVERSE);printf(n2-D IDCT=);PrintMat(&a);38本科生核心专业课程:数字媒体技术基础(04831800)Discre
35、te Cosine Transform(DCT)Transform kernel of two-dimensional DCT iswhereClearly,the kernel for the DCT is both separable and symmetric,and hence the DCT may be implemented as a series of one dimensional DCTs.39本科生核心专业课程:数字媒体技术基础(04831800)Discrete Cosine Transform(DCT)Forward transform and Inverse tra
36、nsformwhere u,v,x,y=0,1,2,N-140本科生核心专业课程:数字媒体技术基础(04831800)Transform Matrix of DCTwhere:41本科生核心专业课程:数字媒体技术基础(04831800)Example of DCT42本科生核心专业课程:数字媒体技术基础(04831800)DCT的几点说明DCT变换避免了复数运算。由于图像矩阵是实数矩阵,那么它的DCT也是实数DCT是正交变换,其变换矩阵是正交阵,变换核是可分离的。DCT有快速算法DCT与IDCT具有相同的变换核,因此具有相同的变换矩阵,即正变换与逆变换公用同一个算法模块DCT具有更强的信息集中
37、能力,能将最多的信息放到最小的系数上去。43本科生核心专业课程:数字媒体技术基础(04831800)HighGUI操作oSmart windowsoImage I/O,renderingoProcessing keyboard and other events,timeoutsoTrackbarsoMouse callbacksoVideo I/O44本科生核心专业课程:数字媒体技术基础(04831800)WindowsocvNamedWindow(window_name,fixed_size_flag)cvNamedWindow(window_name,x,y)cvDestroyWindow
38、(window_name)ncreates window accessed by its name.Window handles repaint,resize events.Its position is remembered in registry.ncvNamedWindow(ViewA,1);ncvMoveWindow(ViewA,300,100);ncvDestroyWindow(ViewA);nocvShowImage(window_name,image);ncopies the image to window buffer,then repaints it when necessa
39、ry.8u|16s|32s|32fC1|3|4 are supported.nonly the whole window contents can be modified.Dynamic updates of parts of the window are done using operations on images,drawing functions etc.45本科生核心专业课程:数字媒体技术基础(04831800)Windowso等待按键cvWaitKeyint cvWaitKey(int delay=0)n如果delay=0,则无限等待,则等待delay毫秒则返回n在程序循环中,有时
40、候由于程序一直处于计算中,窗口无法重新恢复(如读出视频中的所有帧并显示),可以加入cvWaitKey,使之等待几毫秒,让窗口完成重新绘制再执行其他操作46本科生核心专业课程:数字媒体技术基础(04831800)图像的使用与操作(1)o创建头并分配数据 CreateImageIplImage*cvCreateImage(CvSize size,int depth,int channels);size:图像宽、高.depth:图像元素的位深度,IPL_DEPTH_8U|8S|16U|16S|32S|32F|64F channels:每个元素(像素)的颜色通道数量.可以是 1,2,3 或 4.o释放
41、头和图像数据 ReleaseImagevoid cvReleaseImage(IplImage*image);o复制图像 CloneImageIplImage*cvCloneImage(const IplImage*image);47本科生核心专业课程:数字媒体技术基础(04831800)图像的使用与操作(2)o头分配CreateImageHeaderIplImage*cvCreateImageHeader(CvSize size,int depth,int channels)o初始化被用图分配的图像头 InitImageHeaderIplImage*cvInitImageHeader(Ipl
42、Image*image,CvSize size,int depth,int channels,int origin=0,int align=4);origin IPL_ORIGIN_TL 或 IPL_ORIGIN_BL.align 图像行排列,典型的 4 或 8 字节.函数 cvInitImageHeader 初始化图像头结构,指向用户指定的图像并且返回这个指针。o释放头 ReleaseImageHeadervoid cvReleaseImageHeader(IplImage*image);48本科生核心专业课程:数字媒体技术基础(04831800)程序示例:Create image#incl
43、ude cv.h#include highgui.h#include int main()IplImage*cvImg;/image used for visualisationCvSize imgSize;/size of visualisation imageint i=0,j=0;imgSize.width=640;imgSize.height=480;cvImg=cvCreateImage(imgSize,8,1);/creation of a 8 bits depth gray imagefor(i=0;i imgSize.width;i+)/image is filled with
44、 gray values corresponding for(j=0;j imageData+cvImg-widthStep*j)i =(char)(i*j)%256);cvNamedWindow(Testing OpenCV.,1);/creation of a visualisation windowcvShowImage(Testing OpenCV.,cvImg);/image visualisationcvWaitKey(0);/wait for keycvDestroyWindow(image);/close windowcvReleaseImage(&cvImg);/memory
45、 release return(0);/stopping the program本科生核心专业课程:数字媒体技术基础(04831800)程序示例:Create image50本科生核心专业课程:数字媒体技术基础(04831800)图像的使用与操作(3)o从文件读图像cvLoadImageIplImage*cvLoadImage(char*fileName,int flag=1)nOpenCV支持的图像格式:BMP、DIB、JPG、PNG、PBM、PGM、PPM、SR、RAS和TIFFo写图像到文件cvSaveImageIplImage*cvSaveImage(char*fileName,Ipl
46、Image*img)o图像转换cvConvertImage(IplImage*src,IplImage*dst,int flags=0);/灰度图彩色图cvCvtColor(IplImage*src,IplImage*dst,int code);/彩色图彩色图/灰度图nCode=CV_2:,=RGB,BGR,GRAY,HSV,YCrCb,XYZ,Luv,HLS 51本科生核心专业课程:数字媒体技术基础(04831800)图像装载与显示示例#include cv.h#include highgui.h#include/file example.bmp in the images director
47、ychar name0=images/example.bmp;/file example.jpg in the images directorychar name1=images/example.jpg;本科生核心专业课程:数字媒体技术基础(04831800)图像装载与显示示例int main()IplImage*img0=NULL;IplImage*img1=NULL;img0=cvLoadImage(name0,-1);img1=cvLoadImage(name1,-1);cvNamedWindow(image0,1);cvNamedWindow(image1,1);cvShowImage
48、(image0,img0);cvShowImage(image1,img1);cvWaitKey(0);/wait for key to close the windowscvReleaseImage(&img0);cvReleaseImage(&img1);return(0);本科生核心专业课程:数字媒体技术基础(04831800)图像处理函数ocvSub(img0,img1,res,0)subtract img0 from img1 and store the result in res本科生核心专业课程:数字媒体技术基础(04831800)休息55本科生核心专业课程:数字媒体技术基础(0
49、4831800)第二部分o基本视频操作oOpenCV的动态结构及操作o基于OpenCV的图像/视频处理(6个示例)o基于OpenCV的研究与开发:DEMO56本科生核心专业课程:数字媒体技术基础(04831800)视频的使用和操作(1)o打开摄像头CvCapture*cvCaptureFromCAM(camera_id=0);o打开文件CvCapture*cvCaptureFromFile(videofile_path);CvCapture*cvCaptureFromAVI(inflie.avi);o捕捉某一帧 cvGrabFrame(capture)/抓住一帧,为快速遍历视频帧 IplIma
50、ge*img=cvRetrieveImage(capture);/把Grab的帧取出,或 IplImage*cvQueryFrame(capture);o释放捕捉源cvReleaseCapture(&capture);57本科生核心专业课程:数字媒体技术基础(04831800)视频的使用和操作(2)o保存视频文件ntypedef struct CvVideoWriter;nCvVideoWriter*cvCreateVideoWriter(const char*filename,int fourcc,double fps,CvSize frame_size,int is_color=1);ni