P34轮廓匹配(矩算法)

(一)知识点

①轮廓匹配主要基于Hu矩的特性放缩不变性旋转不变性

P34轮廓匹配(矩算法)_第1张图片

图像的矩特征 - ☆Ronny丶 - 博客园 (cnblogs.com)

 ②具体方法P34轮廓匹配(矩算法)_第2张图片

(二)API

① moments()【计算几何矩】

Moments moments( InputArray array, bool binaryImage = false );

参数解释(OpenCV: Structural Analysis and Shape Descriptors

binaryImage:如果为 true,则所有非零图像像素都被视为 1。该参数仅用于图像。其实就相当于一个二值化了,只不过阈值为无限接近0但不等于0

moments()返回Moments类

②HuMoments()【计算Hu矩】 

void HuMoments( const Moments& moments, double hu[7] );
//主要是计算7个Hu(图像不变性,第7个除外,会应反射而改变)
void HuMoments( const Moments& m, OutputArray hu );
//参二输出一个Mat类的Hu

这是一个重载的成员函数,为方便起见而提供。它与上述函数的不同之处仅在于它接受的参数。

OpenCV: Structural Analysis and Shape Descriptors

③matchShapes()【基于轮廓Hu的匹配计算】

double matchShapes( InputArray contour1, InputArray contour2,
                                 int method, double parameter );

参数结束:

InputArray contour1:可以是Mat类的轮廓1(但是用轮廓1的Hu值更准确

InputArray contour2:可以是Mat类的轮廓2(但是用轮廓2的Hu值更准确

int method:计算两轮廓(两轮廓Hu值的方式)见下图

P34轮廓匹配(矩算法)_第3张图片

 (三)代码展示

P34轮廓匹配(矩算法)_第4张图片

P34轮廓匹配(矩算法)_第5张图片

(四)运行效果 

P34轮廓匹配(矩算法)_第6张图片

你可能感兴趣的:(计算机视觉,c++,opencv)