OpenCV 学习 入门

本文介绍了OpenCV中的Rect类及其常用方法,如计算面积、判断点和矩形包含关系,同时对比了Mat、IplImage和CvMat类型在计算和图像操作上的特点。重点讲解了Mat的内存管理优势和矩阵元素的字节计算。
摘要由CSDN通过智能技术生成

OpenCV 学习

Rect 类 (rectangular) 一般用于存图片

成员变量x、y、width、height,分别为左上角点的坐标和矩形的宽和高。

常用的成员函数有:

  • Size()返回值为一个Size
  • area()返回矩形的面积
  • contains(Point)用来判断点是否在矩形内
  • inside(Rect)函数判断矩形是否在该矩形内
  • tl()返回左上角点坐标 (top left)
  • br()返回右下角点坐标 (bottom right)
OpenCV——Mat,IplImage,CvMat类型转换

Mat,cvMat和IplImage这三种类型都可以代表和显示图像,三者区别如下

  • Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。
  • 而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。IplImage类型与CvMat类型的关系类似于面向对象中的继承关系。实际上,CvMat之上还有一个更抽象的基类----CvArr,这在源代码中会常见。在opencv2.0之前,opencv是完全用C实现的。

1.IplImage

2.CvMat

需要了解,①在OpenCV中没有向量(vector)结构。任何时候需要向量,都只需要一个列矩阵(如果需要一个转置或者共轭向量,则需要一个行矩阵)。②OpenCV矩阵的概念与我们在线性代数课上学习的概念相比,更抽象,尤其是矩阵的元素,并非只能取简单的数值类型,可以是多通道的值。

3.Mat

Mat最大的好处就是能够更加方便的进行内存管理,不再需要程序员手动管理内存的释放。Mat是一个多维的密集数据数组,可以用来处理向量和矩阵、图像、直方图等等常见的多维数据。

  • elemSize
    • 矩阵一个元素占用的字节数,例如:type是CV_16SC3,那么elemSize = 3 * 16 / 8 = 6 bytes
  • elemSize1
    • 矩阵元素一个通道占用的字节数,例如:type是CV_16CS3,那么elemSize1 = 16 / 8 = 2 bytes = elemSize / channels

参考资料:

https://www.cnblogs.com/farewell-farewell/archive/2004/01/13/5903464.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值