最新学习材料OpenCVPPT课件.ppt
《最新学习材料OpenCVPPT课件.ppt》由会员分享,可在线阅读,更多相关《最新学习材料OpenCVPPT课件.ppt(117页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 学习 材料 OpenCVPPT 课件
限制150内