opencv常用类&函数

本文介绍了OpenCV中的关键类,包括Mat类、Point类、Rect类,讲解了它们的特性及使用方法。Mat类提供方便的内存管理,Point类用于描述图像点,Rect类用于表示矩形区域。此外,还提到了容器类如vector的使用,以及数组与图像之间的转换、图片显示、鼠标响应、代码测试时间和指定位置保存图片的相关操作。
摘要由CSDN通过智能技术生成

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 = 
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值