经常看到有学习OpenCV不久的人提问,如何识别一些简单的几何形状与它们的颜色,其实通过OpenCV的轮廓发现与几何分析相关的函数,只需不到100行的代码就可以很好的实现这些简单几何形状识别与对象测量相关操作。本文就会演示给大家如何通过OpenCV 轮廓发现与几何分析相关函数实现如下功能:
几何形状识别(识别三角形、四边形/矩形、多边形、圆)
计算几何形状面积与周长、中心位置
提取几何形状的颜色
在具体代码实现与程序演示之前,我们先要搞清楚一些概念。
一:基本概念与函数介绍
1. 轮廓(contours)
什么是轮廓,简单说轮廓就是一些列点相连组成形状、它们拥有同样的颜色、轮廓发现在图像的对象分析、对象检测等方面是非常有用的工具,在OpenCV中使用轮廓发现相关函数时候要求输入图像是二值图像,这样便于轮廓提取、边缘提取等操作。轮廓发现的函数与参数解释如下:
findContours(image, mode, method, contours=None, hierarchy=None, offset=None)
- image输入/输出的二值图像
- mode 迒回轮廓的结构、可以是List、Tree、External
- method 轮廓点的编码方式,基本是基于链式编码
- contours 迒回的轮廓集合
- hieracrchy 迒回的轮廓层次关系
- offset 点是否有位移
2. 多边形逼近
多边形逼近,是通过对轮廓外形无限逼近,删除非关键点、得到轮廓的关键点,不断逼近轮廓真实形状的方法,OpenCV中多边形逼近的函数与参数解释如下:
app