OpenCV技术在数字图像处理中的应用

OpenCV技术在数字图像处理中的应用,第1张

  OpenCV简介

  开放源代码的计算机视觉类库OpenC++V由英特尔公司位于俄罗斯的研究实验室开发,它是一套可以免费获得的由一些C函数和C++类所组成的库,用来实现常用的图像处理以及计算机视觉算法。与英特尔公司所开发的另外一个图像处理库IPL相比,OpenCV主要针对图像的一些高级处理,例如目标分割、运动分析与跟踪、特征检测以及三维重建等。

  OpenCV的特点

  OpenCV是开发的C源码,基于Intel处理器指令集开发的优化代码,具有统一的结构以及功能定义、强大的矩阵计算能力、方便灵活的接口,而且同时支持windows、linux和MacOS平台等。

  *开放的源代码,对个人以及商业的开发完全是免费的;

  *支持大多数的C和C++编译器,可以在不同的平台之间进行移植,例如:VC++6.0、VC.NET2005、VC.NET2008以及C++Builder等;

  *可移植,跨平台性好,可以在windows,linux和MacOS平台上运行;

  *OpenCV所有的算法都是基于封装于IPL的具有高灵活性的动态数据结构,并且有一半以上的函数在设计与汇编时针对Intel处理器指令集将代码进行了优化;

  *具有强大的图像以及矩阵的计算能力,大大减少了开发者的工作量,有效提高了程序开发的效率以及程序运行的可靠性;

  *具有方便灵活的接口,包含了300多个C/C++函数,代码效率高;支持高层API;可以独立使用,也可以使用外部库。

  OpenCV的模块

  本文采用的是OpenCV2.4版本,包括以下几个模块,具体功能是:

  *CV模块:它是主要的OpenCV函数,包括图像处理、运动分析与对象跟踪、结构分析、模式识别、相机标定以及三维重建等;

  *CVAUX模块:包括一些三维跟踪、PCA、HMM等函数;

  *CXCORE模块:该库包括了所有OpenCV运行时的一些最基本的数据结构、矩阵、数组的基本运算,包括出错处理的一些基本函数;

  *ML模块:机器学习库,包括一些用于分类、回归和数据聚类的类和函数;

  数据存取方式

  OpenCV数据的存取方式有三种:间接存取、直接存取、带指针直接存取。第一种速度较慢,后两种速度较快。下面对带指针直接存取的方式进行介绍。

  假定图像定义为IplImage*img,不同类型的图像元素存取方式为:

  8位单通道的图像,像素I(i,j)存取 *** 作为:

  intstep=img-》widthStep/sizeof(uchar);

  uchar*data=(uchar*)img-》imageData;I(i,j)~data[i*step+j];

  8位3通道的图像,像素I(i,j)存取 *** 作为:

  intstep=img-》widthStep/sizeof(uchar);

  intchannels=img-》nChannels;

  uchar*data=(uchar*)img-》imageData;

  I(i,j)B~data[i*step+j*channels+0];//BLUE分量

  I(i,j)G~data[i*step+j*channels+1];

  //GREEN分量I(i,j)R~data[i*step+j*channels+2];//RED

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2717631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存