android opencv hu moment,【opencv】图像和轮廓的匹配(hu矩)

本文介绍了图像处理中的Hu矩,它用于构造图像的平移不变、尺度不变和旋转不变性。通过OpenCV库,展示了如何计算图像的中心矩、归一化中心矩和Hu矩,并给出了计算Hu矩的代码示例。最后提到了形状匹配函数cvMatchShapes,该函数用于比较不同形状的相似性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像的hu矩具有平移不变、尺度不变和旋转不变性。

(1)中心矩:构造平移不变性。利用质心坐标构造图像的中心矩。

(2)归一化中心矩:构造尺度不变性。

(3)hu矩:构造旋转不变性。

opencv的实现计算hu矩:

(1)普通矩和中心矩的计算

void cvMoments(const CvArr* arr,cvMoments* moments,int binary=0);

void cvGetHuMoments(cvMoments* moment,cvHuMoments* hu_moments);

#include "cv.h"

#include "highgui.h"

#include "cxcore.h"

#include "cvaux.h"

int main(int argc, char* argv[])

{

//产生一幅图像

IplImage* src;

src = cvCreateImage(cvSize(10,10),8,1);

//图像初始值清零

cvZero(src);

//图像的前面5行5列赋值为255

for(int yy=0;yy<5;yy++)

{

for(int xx=0;xx<5;xx++)

{

cvSetReal2D(src,yy,xx,255);

}

}

double m00,m10,m01;

//定义矩变量

CvMoments moment;

//计算原始矩和中心矩

cvMoments(src,&moment,2);

m00 = cvGetSpatialMoment(&moment,0,0);

m10 = cvGetSpatialMoment(&moment,1,0);

m01 = cvGetSpatialMoment(&moment,0,1);

//计算质心坐标

float x = (float)(m10/m00);

float y = (float)(m01/m00);

//定义hu矩变量

CvHuMoments humoment;

//计算hu矩

cvGetHuMoments(&moment,&humoment);

return 0;

}

形状的匹配:

double cvMatchShapes(const void* object1,const void* object2,int method,double parameter=0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值