android opencv hu moment,Opencv计算一幅图像的hu矩

首先Hu矩是干嘛得呢?用hu矩来匹配图像

下面是计算hu矩的过程  概念先了解一下吧

普通矩 -----》0阶矩(m00) :目标区域的质量1阶矩(m01,m10) :目标区域的质心2阶矩(m02,m20,m11) :旋转半径3阶矩(m03,m30,m12,m21) :目标的方位和斜度,反应目标

中心矩:构造平移不变性 ---------》 质心坐标:x = m10/m00 y = m01/m00;

归一化中心矩:构造尺度不变性 ----------》(mu02,mu20,mu11,mu03,mu30,mu12,mu21)

hu矩:构造旋转不变性 (h1,h2,。。。。,h7)

代码如下:#include

#include

#include

//计算一幅图像的hu矩

int main()

{

IplImage* src;

src = cvCreateImage(cvSize(10,10),8,1); //这里是创建一幅图像 也可以自己加载一幅图像计算

cvZero(src); //把所以值都赋值为0

int xx,yy;

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

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

cvSetReal2D(src,yy,xx,255); //把前5行5列的像素变为255 白色

}

}

/*cvNamedWindow("1");

cvShowImage("1",src);*/

double m00,m10,m01; //计算0阶矩和1阶矩

CvMoments moment;

cvMoments(src,&moment,2);  //2: 只要比0大的数都可以 表示像素255的点都用1来表示

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

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

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

double x = m10/m00;

double y = m01/m00;

CvHuMoments humoment;

cvGetHuMoments(&moment,&humoment); //计算出hu矩的值

cvWaitKey(0);

return 0;

}

#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。如果需要本贴图片源码等资源,请向勇哥索取。

收藏 | 0点赞 | 0打赏作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值