- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IPL和OpenCV在VC++环境下的应用
吕学刚 于明 刘翠响
(河北工业大学信息学院 天津 300130)
摘 要 IPL和OpenCV是图像处理与计算机视觉编程的功能强大的类库。本文介绍了这两个类库常用的数据结构以及在VC++环境下调用相关库函数的软件设置问题,最后给出了一个典型的在图像采集过程中提取目标轮廓的应用实例。本文对于图像处理与计算机视觉方面的应用设计具有很强的实用价值。
关键词 IPL;OpenCV;计算机视觉;图像处理; VC++
1 引言
图像是人类获取视觉信息的主要途径,而视觉正是人类从大自然中获取信息的最主要的手段。目前,工业、医疗保健、航空航天、军事等各个领域已经广泛地使用了数字图像处理和计算机视觉技术。Intel公司开发的IPL和OpenCV类库是在VC++环境下用来进行数字图像处理和计算机视觉编程的强大工具,以其方便使用和功能强大等优点,缩短了相关程序开发周期,具有很强的实用价值。但是目前国内还没有这方面的内容,因而本文将对这两个类库及其使用方法作一个较全面的介绍。
2 IPL和OpenCV介绍
Visual C++是一种具有高度综合性能的软件开发工具,用它开发出的程序具有运行速度快、可移植能力强等优点,在对数字图像进行处理时经常采用VC++进行编程。Intel公司推出的IPL(Image Processing library)和OpenCV(Open Source Computer Vision Library)是在数字图像处理和计算机视觉方面功能强大的类库,能给编程带来极大的方便,可轻松实现很多复杂的数字图像处理功能,缩短程序的开发周期。这两个库都可通过从Intel公司的网站下载得到。
IPL以标准DLLs和静态库的形式提供了一系列底层图像处理函数,可以进行图像滤波、阈值计算、像素的算术和逻辑运算、图像的颜色转换、图像统计学处理、以及图像的形态学处理等操作。另外,还有一些函数可以进行线性的几何变换和图像变换,其中线性图像变换包括快速傅立叶变换(FFT)和离散余弦变换(DCT)。该库的函数可处理多种格式的图像文件,支持1-, 8-, 16-, and 32-位整型像素和32-位浮点型像素,图像可具有任意数目的通道。该库还支持与设备无关位图(DIB)之间的转换以及彩色与灰度图像间的转换。IPL的这些特点是非常实用的,如它减少了程序的开发时间,使开发出的产品对于特定处理器具有最佳性能,可以把该库加入已有的设计中,还可以处理大的图像等。目前IPL最新版本是V2.5,它针对奔Ⅲ处理器做了进一步的优化,同时提供对奔4处理器的支持,并对旧版本中的函数进行了一些修改,还添加了一些产生图像噪声的新函数。
OpenCV是公司于1999年在俄罗斯设立的软件开发中心“Software Development Center”开发V2.1,它的特点在于加了三维图像/影像处理技术这一技术可以使计算机获得了深度视觉的能力,提高各种视觉应用的功能如此以来,电脑将能以人眼看物体的方式“观看”物体新版软件可使电脑模仿人眼看物体的方式,通过两部数码摄像头观察事物。“计算机将能够看到与人类所见相同的物体公司结构的处理器开发的,故为了取得最佳性能,要求PC机最好使用奔4或奔Ⅲ处理器,并具有合适大小的内存;软件环境为Windows 95/98/NT/2000,使用C/C++编译器(最好使用Microsoft Visual C++5.0以上版本)。
3 IPL和OpenCV中常用的数据结构
IPL中的函数只处理一种格式的图像,该格式的头结构是IplImage。IplImage是这两个库中基本的数据结构,包含了图像的所有信息,还有指向图像数据的指针。它的具体定义如下:
typedef struct _IplImage
{
int nSize; /*IplImage结构的大小*/
int ID; /*图像头的版本*/
int nChannels; /*通道数,据不同颜色类型的位图可取1、3、4*/
int alphaChannel; /*Alpha通道数,没有取0,有则取4*/
int depth; /*每个通道的位数,可取1、8、16、32*/
char colorModel[4]; /*颜色模式,有Gray、RGB、RGBA、CMYK等*/
char channelSeq[4]; /*通道顺序,如“RGB”、“BGR”等*/
int dataOrder; /*数据的排列方式,使用像素格式*/
int origin; /*坐标原点,有左上角和左下角两种*/
int align; /*图像数据的排列方式*/
int width; /*图像的
文档评论(0)