opencv图像处理入门

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基本数据结构机器视觉科研教学团队2OpenCV的配置使用OpenCV帮助文档打开一幅图像3OpenCV在VC6下安装与配置1.安装VisualC++6.02.安装OpenCV,在安装时选择将\OpenCV\bin加入系统变量(Add\OpenCV\bintothesystermPATH)。4OpenCV在VC6下安装与配置5OpenCV在VC6下安装与配置6OpenCV在VC6下安装与配置3.配置Windows环境变量.检查C:\ProgramFiles\OpenCV\bin是否已经被加入到环境变量PATH,如果没有,请加入。加入后需要注销当前Windows用户(或重启)后重新登陆才生效。(可以在任务管理器里重启explorer.exe)7OpenCV在VC6下安装与配置4.配置VisualC++6.0(1)全局设置菜单Tools-Options-Directories:先设置lib路径,选择Libraryfiles,在下方填入路径:C:\ProgramFiles\OpenCV\lib8OpenCV在VC6下安装与配置然后选择includefiles,在下方填入路径:C:\ProgramFiles\OpenCV\cxcore\includeC:\ProgramFiles\OpenCV\cv\includeC:\ProgramFiles\OpenCV\cvaux\includeC:\ProgramFiles\OpenCV\ml\includeC:\ProgramFiles\OpenCV\otherlibs\highguiC:\ProgramFiles\OpenCV\otherlibs\cvcam\include9OpenCV在VC6下安装与配置接着选择sourcefiles,在下方填入路径:C:\ProgramFiles\OpenCV\cv\srcC:\ProgramFiles\OpenCV\cxcore\srcC:\ProgramFiles\OpenCV\cvaux\srcC:\ProgramFiles\OpenCV\otherlibs\highguiC:\ProgramFiles\OpenCV\otherlibs\cvcam\src\windows10OpenCV在VC6下安装与配置(2).项目设置每创建一个将要使用OpenCV的VCProject,都需要给它指定需要的lib。菜单:Project-Settings,将Settingfor选为AllConfigurations,选择右边的link标签,在Object/librarymodules附加上:cxcore.libcv.libml.libcvaux.libhighgui.libcvcam.lib如果你不需要这么多lib,你可以只添加你需要的lib。11内容OpenCV命名规则OpenCV的基本数据结构图像处理例程12一、OpenCV命名规则(1)函数名(2)矩阵数据类型(3)图像数据类型(4)头文件13(1)函数名:–cvActionTargetMod(...)•Action=核心功能(corefunctionality)(e.g.set,create)•Target=目标图像区域(targetimagearea)(e.g.contour,polygon)•Mod=(可选的)调整语(optionalmodifiers)(e.g.argumenttype)–cvGet2D、cvCreateImage、cvNamedWindow14(2)矩阵数据类型:–CV_bit_depth(S|U|F)Cnumber_of_channels•S=符号整型U=无符号整型F=浮点型E.g.:•CV_8UC1是指一个8位无符号整型单通道矩阵,CV_32FC2是指一个32位浮点型双通道矩阵•CV_8UC1CV_8SC1CV_16UC1CV_16SC1CV_8UC2CV_8SC2CV_16UC2CV_16SC2CV_8UC3CV_8SC3CV_16UC3CV_16SC3CV_8UC4CV_8SC4CV_16UC4CV_16SC4CV_32SC1CV_32FC1CV_64FC1CV_32SC2CV_32FC2CV_64FC2CV_32SC3CV_32FC3CV_64FC3CV_32SC4CV_32FC4CV_64FC415(3)图像数据类型:–IPL_DEPTH_bit_depth(S|U|F)E.g.:•IPL_DEPTH_8U图像像素数据是8位无符号整型.IPL_DEPTH_32F图像像素数据是32位浮点型.•IPL_DEPTH_1UIPL_DEPTH_8UIPL_DEPTH_8SIPL_DEPTH_16UIPL_DEPTH_16SIPL_DEPTH_32FIPL_DEPTH_64F16(4)头文件:–#includecv.h–#includecvaux.h–#includehighgui.h–#includeml.h–#includecxcore.h//一般不需要,cv.h内已包//含该头文件17OpenCV的编码样式指南文件命名所有cv和cvaux库文件的命名必须服从于以下规则:–所有的CV库文件名前缀为cv–混合的C/C++接口头文件扩展名为.h–纯C++接口头文件扩展名为.hpp–实现文件扩展名为.cpp18OpenCV的编码样式指南命名约定–OpenCV中使用大小写混合样式来标识外部函数、数据类型和类方法。宏全部使用大写字符,词间用下划线分隔。–所有的外部或内部名称,若在多个文件中可见,则必须含有前缀。•外部函数使用前缀cv•内部函数使用前缀Icv•数据结构(C结构体、枚举、联合体、类)使用前缀Cv•外部或某些内部宏使用前缀CV_•内部宏使用前缀ICV_基本数据结构20任务–(1)创建和定位一个新窗口:–(2)载入图像:–(3)显示图像:–(4)关闭窗口:–(5)改变窗口大小:21(1)创建和定位一个新窗口:cvNamedWindow(win1,CV_WINDOW_AUTOSIZE);cvMoveWindow(“win1”,100,100);//offsetfromtheULcornerofthescreen22(2)载入图像:从文件中读入图像IplImage*img=0;img=cvLoadImage(fileName);if(!img)printf(Couldnotloadimagefile:%s\n,fileName);支持的图像格式:bmp,dib,jpeg,jpg,jpe,png,pbm,pgm,ppm,sr,ras,tiff,tif23Opencv默认将读入图像强制转换为一幅三通道彩色图像,可以按一下方法修改读入方式:img=cvLoadImage(filename,flag);flag:0将读入的图像强制转换为一幅三通道彩色图像=0将读入的图像强制转换为一幅单通道灰度图像0读入的图像通道数与所读入的文件相同24(3)显示图像:–cvShowImage(win1,img);–该函数可以显示彩色或灰度的字节型/浮点型图像。字节型图像像素值范围为[0-255];浮点型图像像素值范围为[0-1]。彩色图像的三色元素按BGR(蓝-红-绿)顺序存储。(4)关闭窗口:–cvDestroyWindow(win1);(5)改变窗口大小:–cvResizeWindow(win1,100,100);//newwidth/heighinpixels例程26图像文件读入和显示271、图像数据结构IPL图像:282、其它结构类型(1)点(2)标量(2)矩形框大小(以像素为精度)(3)矩形框的偏置和大小29(1)点:30(2)标量:typedefstructCvScalar{doubleval[4]}初始化函数:CvScalars=cvScalar(doubleval0,doubleval1=0,doubleval2=0,doubleval3=0);CvScalars=cvScalar(20.0);s.val[0]=20.0;31(2)矩形框大小(以像素为精度):(3)矩形框的偏置和大小:图像处理入门33面向对象——类怎样区分不同种类的对象?物以类聚人以群分抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。–先注意问题的本质及描述,其次是实现过程或细节。–数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。–代码抽象:描述某类对象的共有的行为特征或具有的功能。–抽象的实现:通过类的声明。抽象34数据抽象:intHour,intMinute,intSecond代码抽象:SetTime(),ShowTime()属性行为表针旋钮其他机械机构调节旋钮抽象实例——钟表35classClock{public:voidSetTime(intNewH,intNewM,intNewS);voidShowTime();private:intHour,Minute,Second;};抽象实例——钟表类36将抽象出的数据成员、代码成员相结合,将它们视为一个整体。–目的是曾强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。–实现封装:类声明中的{}封装37实例:classClock{public:voidSetTime(intNewH,intNewM,intNewS);voidShowTime();private:intHour,Minute,Second;};边界特定的访问权限外部接口封装38类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。利用类可以实现数据的封装、隐藏、继承与派生。利用类易于编写大型复杂程序,其模块化程度比C中采用函数更高。C++中的类39类是一种用户自定义类型,声明形式:class类名称{public:公有成员(外部接口)private:私有成员protected:保护型成员};类的声明形式40对象:某个特定类的实例。用同一个类产生的对象具有相同的数据结构、操作集合和能见度,不同的标识,相同或不同的初始状态,拥有和保持不同的运行状态。对象之间通过消息传递方式进行交互。对象与一般数据类型的实例的区别:对象是主动的数据,对象之间通过消息传递方式进行通信,而一般数据只能被动地由过程来加工。4142例程43任务–(1)创建和定位一个新窗口:–(2)载入图像:–(3)显示图像:–(4)创建一幅新图像–(5)复制已有图像–(6)显示新图像–(7)保存新图像441、图像的内存分配与释放(1)分配内存给一幅新图像:IplImage*cvCreatImage(CvSizesize,intdepth,intchannels);size:cvSize(width,height);depth:像素深度:IPL_DEPTH_8U,IPL_DEPTH_8S,IPL_DEPTH_16U,IPL_DEPTH_16S,IPL_DEPTH_32S,IPL_DEPTH_32F,IPL_DEPTH_64Fchannels:像素通道数:123or4各通道是交错排列的,一幅彩色图像的数据排列格式如下:b0g0r0b1g1r1……45示例:IplImage*img1=cvCreatImage(cvSize(640,480),IPL_DEPTH_8U,,1);IplImage*img2=cvCreatImage(cvSize(640,480),IPL_DEPTH_32F,3);46(2)释放图像:IplImage*img1=cvCreatImage(cvSize(640,480),IPL_DEPTH_8U,1);cvReleaseImage(&img);(3)复制图像:IplImage*img1=cvCreatImage

1 / 68
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功