一、基础图像容器Mat
为解决复制开销大的问题,OpenCV引用计数机制。其思路是让每个Mat对象有自己的信息头,但共享同一个举证。通过矩阵指针指向同一地址,拷贝构造函数只复制信息头与矩阵指针,而不复制矩阵。
注:由于多个对象都指向同一个也是唯一一个矩阵,通过任一对象对矩阵修改也会影响替他对象。同时也可以创建只引用部分数据的信息头,比如创建感兴趣区域(ROI)。Mat D(A, Rect(10,10,100,100))。如果复制举证本身,则使用函数clone和copyTo。
可总结为:
二、常用的数据结构和函数
点的表示:Point类,表示了二维坐标系下的点
颜色的表示:Scalar类,如Scalar(a, b, c)则定义的RGB颜色值为:红色分量的c,绿色b,蓝色a
尺寸的表示:Size类
矩形的表示:Rect类
函数:
1.颜色空间转换:cvtColor,实现RGB颜色向HSV、HSI等颜色空间的转换,也可以转换为灰度图像。
dst = cv.cvtColor( src, code[, dst[, dstCn]] ) (原图像,输出图像,color转化代码,输出通道)
src: 输入图像即要进行颜色空间变换的原图像,可以是Mat类
dst: 输出图像即进行颜色空间变换后存储图像,也可以Mat类
code: 转换的代码或标识,即在此确定将什么制式的图片转换成什么制式的图片,后面会详细将
dstCn = 0: 目标图像通道数,如果取值为0,则由src和code决定
OpenCV还包含许多函数,之后用到什么函数在详细解释。
三、基本图像绘制
本节主要学习用point定义2D点,如何使用Scalar表示颜色。
基本常用函数为:
直线:line
椭圆:ellipse
矩形:rectangle
圆:circle
多边形:fillPoly