OpenCV图像轮廓
- 图像轮廓的绘制与查找
- *findContours函数*:
- 矩特征
- Hu特征
Fu Xianjun. All Rights Reserved.
图像轮廓的绘制与查找
一个轮廓对应着一系列的点,这些点以某种方式表示图像中的一条曲线。在OpenCV中,函数cv2.findContours()用于查找 图像的轮廓,并能够根据参数返回特定的表示方法的轮廓(曲线)。
函数cv2.drawContours能够将查找到的轮廓绘制到图像上,该函数可以根据参数在图像上绘制不同样式的轮廓,可以绘制全部轮廓也可以仅仅绘制指定的轮廓。
findContours函数:
函数cv2.findContours()的用法为
img , contours , hierarchy = cv2.findContours(img , mode , method)
其中式中的返回值为:
img:与函数参数中的原始图像img一致。
contours为返回的轮廓。
hierarchy 为图像拓扑信息(轮廓层次)。
而式中参数的含义为:
img原始图像
mode是轮廓检索模式
method为轮廓的近似方法。
矩特征
比较两个轮廓最简单的方法是比较二者的轮廓矩。轮廓矩代表了一个轮廓、一幅图像、一组点集的全局特征。矩信息包含了对应对象不同类型的几何特征,例如大小、位置、角度、形状等。矩特征被广泛地应用在模式识别、图像识别等方面
Hu特征
Hu矩是归一化中心矩的线性组合,Hu矩再图像旋转,缩放,平移
等操作后,仍能保持矩的不变性,经常使用 Hu 矩来识别图像的特征。
在 OpenCV 中,使用函数 cv2.HuMoments()可以得到 Hu 距。该函
数使用 cv2.moments()函数的返回值作为参数,返回 7 个 Hu 矩值。
通过Hu 矩可以来判断两个对象的一致性。但是结果比较抽象,
OpenCV 提供了 cv2.matchShapes() 对两个对象的Hu矩进行比较。
retval = cv2.matchShapes(contour1, contour2, method, 0.0)
在这句语法式子中
contour1 :第一个轮廓或灰度图像。
contour2:第二个灰度或轮廓图像。
method :比较两个对象的Hu 矩的方法,一般为1。