opencv常用类&函数
1. Mat类
Mat 区别于IplImage的是,你不再需要手动分配其大小并且当你不需要它的时候你不再需要手动释放它。Mat本质上是由两个数据部分组成的类: Header和Pointer。Header中主要包含矩阵的大小,存储方式,存储地址等信息,Pointer中存储指向像素值的指针。
Mat A, C;
A=imread("lena.jpg");
Mat B(A);
C=A;
这段程序,A、B、C指向的是同一块数据,他们的 header不同,但对于 A 的操作同样也影响着 B、C 的结果。如果想建立互不影响的 Mat,即真正的复制操作,需要使用函数 clone()或者 copyTo()
Mat dst;
Mat src=imread("lena.jpg");
Mat src1=src.clone();
dst.create(src1.size(),src1.type());
Mat M(2,2,CV_8UC3,Scalar(0,0,125));//初始化
M.create(4,4,CV_8UC(2));//使用这种方法不能初始化矩阵
/*2,2表示尺寸
CV_[The number of bits per itrm][signed or Unsigned][Typeprefix]C[the channel number]
Scalar(0,0,125)表示初始值
*/
//特殊矩阵
Mat zero=Mat::zeros(3,3,CV_8UC1);//零矩阵
Mat I=Mat::eye(4,4,CV_64F);//单位矩阵
Mat one=Mat::ones(2,2,CV_32F);//全1矩阵
//.ptr头指针
Mat image = Mat(400, 600, CV_8UC1);
uchar * data00 = image.ptr<uchar>(0);//data00是指向image第一行第一个元素的指针
uchar * data10 = image.ptr<uchar>(1);//data10是指向image第二行第一个元素的指针
uchar * data01 = image.ptr<uchar>(0)[1];//data01是指向image第一行第二个元素的指针
2. Point类
为了描述图像中的点,opencv中提供了点的模板类,分为2维点模板类
Point_
和3维点模板类Point3_
。Point_
通过2维图像平面中的x和y坐标确定点的位置,Point3_
通过3维立体图像中的x、y、z坐标确定点的位置。对于点的坐标的类型可以是int、double、float类型
Point point;
point.x = 10;
point.y = 8