OpenCV结构简介
2015-03-09 18:52
197 查看
前言
OpenCV的全称是:Open Source Computer Vision Library。它是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV是一个工具库(一个现成的工具),你可以运用它省去很多底层实现,直接基于它进行开发。 俗话说的好:工欲善其事,必先利其器。要想运用得当,必须了解OpenCV能够提供的功能和提供的好坏。本文主要介绍OpenCV的主要功能结构及其运用。
正文
OpenCV主要的类包括Point_,Point3_,Size_,Vec,Matx,Scalar,Rect,Range,Mat。它们是平行的层级。
Point_表示2D的点,Point3_表示3D的点;Mat/Matx分别是 二维或者多维的数组,可以表示矩阵,图像等,Size_用于定义一定长度和宽度的结构;Vec用于定义一个容量比较小的向量,类似于C++ 标准库中的std::Vector;Scalar是四个元素的向量;Rect是矩形的缩写;Range用于定义一个整型的范围;此外还有SparseMat是多维稀疏矩阵类;Ptr为智能指针类,这个指针相当于C++中的std::tr1::shared_ptr。
需要指出的是以上结构中Point_,Point3_,Size_,Vec,Matx,Ptr都是模板类。
比较重要的是Mat类,因为OpenCV主要是用于图像处理或者视频处理的工具库,这都要用到Mat类,或者其相关类。
1. 构造Matrix的方法
a. Mat image(240, 320, CV_8UC3); 指定长宽和图像类型的构造方法;
b. Mat A33(3, 3, CV_32F, Scalar(5)); double a = CV_PI/3; Mat A22 = (Mat_<float>(2, 2) cos(a), -sin(a), sin(a), cos(a)); 同时指定每个像素的值为常量和特定值的构造方法;
c. 从其它类型构造矩阵,如将image赋值给矩阵,Mat IMat = imread(”path”)
2. 操作Matrix的方法
a. 取特定像素的值:Mat.at<T >(i, j),其中T代表每个像素的数值类型,i和j唯一确定了相应位置。
b. 取得子矩阵:m(Range(i1,i2),Range(j1,j2))
c. 放大矩阵:m.repeat(ny,nx)
d. 分拆多通道矩阵为多个单通道:split(...)
e. 将多个单通道矩阵融合为单个多通道矩阵:merge(...)
还有一些统计学函数和单纯代数加减函数等,这里就不介绍了。
3. 图像处理相关
包含滤波,空间转换,各种其他的转换,直方图,等值线等相关的功能。
4. 展示图像相关
创建一个窗口:namedWindow (winName, flag )
消除一个窗口:destroyWindow (winName )
展示一个窗口:imshow (winName,Image )
暂停等待用户:waitKey ( )
总结
OpenCV为用户提供了很多方便的函数,了解了提供了那些函数和相应用法,才能用OpenCV做出好的应用。其中比较重要的是Mat类,和ImageProcessing模块,highGUI模块。
OpenCV的全称是:Open Source Computer Vision Library。它是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV是一个工具库(一个现成的工具),你可以运用它省去很多底层实现,直接基于它进行开发。 俗话说的好:工欲善其事,必先利其器。要想运用得当,必须了解OpenCV能够提供的功能和提供的好坏。本文主要介绍OpenCV的主要功能结构及其运用。
正文
OpenCV主要的类包括Point_,Point3_,Size_,Vec,Matx,Scalar,Rect,Range,Mat。它们是平行的层级。
Point_表示2D的点,Point3_表示3D的点;Mat/Matx分别是 二维或者多维的数组,可以表示矩阵,图像等,Size_用于定义一定长度和宽度的结构;Vec用于定义一个容量比较小的向量,类似于C++ 标准库中的std::Vector;Scalar是四个元素的向量;Rect是矩形的缩写;Range用于定义一个整型的范围;此外还有SparseMat是多维稀疏矩阵类;Ptr为智能指针类,这个指针相当于C++中的std::tr1::shared_ptr。
需要指出的是以上结构中Point_,Point3_,Size_,Vec,Matx,Ptr都是模板类。
比较重要的是Mat类,因为OpenCV主要是用于图像处理或者视频处理的工具库,这都要用到Mat类,或者其相关类。
1. 构造Matrix的方法
a. Mat image(240, 320, CV_8UC3); 指定长宽和图像类型的构造方法;
b. Mat A33(3, 3, CV_32F, Scalar(5)); double a = CV_PI/3; Mat A22 = (Mat_<float>(2, 2) cos(a), -sin(a), sin(a), cos(a)); 同时指定每个像素的值为常量和特定值的构造方法;
c. 从其它类型构造矩阵,如将image赋值给矩阵,Mat IMat = imread(”path”)
2. 操作Matrix的方法
a. 取特定像素的值:Mat.at<T >(i, j),其中T代表每个像素的数值类型,i和j唯一确定了相应位置。
b. 取得子矩阵:m(Range(i1,i2),Range(j1,j2))
c. 放大矩阵:m.repeat(ny,nx)
d. 分拆多通道矩阵为多个单通道:split(...)
e. 将多个单通道矩阵融合为单个多通道矩阵:merge(...)
还有一些统计学函数和单纯代数加减函数等,这里就不介绍了。
3. 图像处理相关
包含滤波,空间转换,各种其他的转换,直方图,等值线等相关的功能。
4. 展示图像相关
创建一个窗口:namedWindow (winName, flag )
消除一个窗口:destroyWindow (winName )
展示一个窗口:imshow (winName,Image )
暂停等待用户:waitKey ( )
总结
OpenCV为用户提供了很多方便的函数,了解了提供了那些函数和相应用法,才能用OpenCV做出好的应用。其中比较重要的是Mat类,和ImageProcessing模块,highGUI模块。
相关文章推荐
- opencv特征匹配相关结构(keypoint&DMatch类型简介)
- OpenCV特征匹配相关结构(KeyPoint&DMatch类型简介)
- OpenCV 3.x Lib 源码结构简介
- c语言中的结构(struct)和联合(union)简介
- MVC结构简介
- NBear视频 - 0.1 NBear类库结构及功能简介[发布时间:9/5]
- 一. 硬盘结构简介
- MVC结构简介
- 硬盘结构简介
- BSTR详解一 - BSTR简介和内部结构
- 嵌入式实时操作系统µC/OS-II内核结构简介
- 三层结构简介
- opencv简介
- SQLite的结构简介
- opencv简介与开发环境配置
- NBear视频 - 0.1 NBear类库结构及功能简介[发布时间:9/5]
- MVC结构简介
- 硬盘结构简介
- c语言中的结构(struct)和联合(union)简介
- OpenCV简介