在图形里经常会用到比较两个图形的相似程度,因为这是目标识别的一种方法,比如轮胎是圆的,那么就可以拿一个圆来与轮胎的外形进行比较,如果相似度比较高,就有可能是轮胎。在OpenCV里使用cv.matchShapes()函数来进行比较,这个函数返回的值越低,说明匹配越好。其实它是使用图像Hu矩来实现的。对于形状匹配来说,我们希望计算出来的矩具有平移不变性,旋转不变性,尺度不变性,Hu矩就可以满足这一要求;hu矩 是7个数字的组合,每个数字都是利用central moments计算得来,前6个被证明包含平移不变性,旋转不变性,尺度不变性和翻转不变性,第7个的符号与图像翻转有关。计算方式如下:
可以用下面的代码来演示:
#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/5