OpenCV Basics - Mat
转自OpenCV入门教程
1. Mat - ROI Rect
Rect截取ROI, 共享原始Mat内存
另外,copyTo和clone函数区别:当矩阵头文件已经存在管理空间时copyTo函数不会重新申请空间,而clone函数依然会重新申请空间。
重载元算赋‘=’,被赋值的矩阵和赋值矩阵之间空间共享
2. Mat - Init
初始化
除了imread直接初始化Mat,还可以通过二进制流初始化Mat
从内存存取mat
输出格式 format(r, Formatter::FMT_PYTHON)
4. Get Pixel in Mat
Use C style ptr
Iterator, 更安全,不会指针越界,但需事先知道type Vec3b
at方法,直观,但速度慢(Release之下应该速度相同,推荐,可读性好),需要知道类型 vec3b
5. Mat - Mix Channels
mixChannels: 最灵活的重排图像通道的方法
6. Mat - 一些属性
- data: 数据数组的首地址
- elemSize(): 表示每一个元素的数据大小,CV_8UC1是1;CV_8UC3或CV_8SC3是3;CV_16UC3是6。即elemSize是以8bit(一个字节)为一个单位
- elemSize1(): 每一个元素中,单个通道的数据大小,也是字节单位,elemSize/channels. CV_16SC3是2(16是2个字节)
- step: 图像矩阵,一行的长度(字节为单位),elemSize() * cols
- step1(): 一行的长度(每个通道的单个元素的大小为单位),step/eleSize1()
- total(): rows * cols
7. Mat - uchar数组转换