mfc怎样应用opencv求出hu不变矩?初学乍练,求基本的操作流程,谢谢!
如题,怎样用mfc结合opencv求出hu不变矩?
如果可以的话,哪位可以好心给我提示一下不用opencv,自己编写函数实现求不变矩的代码。我查了很多资料,可都是给出的一些理论的算法,没有代码,可是算法我还没学,让我自己变成代码很困难。
我打算是先用opencv的函数实现了,然后参考它的代码把自己的代码编出来,不知可不可行。。。
我刚刚接触图像处理,希望大家可以说的基础点,O(∩_∩)O谢谢!
分就这么多了,希望大家可以帮忙O(∩_∩)O~
[解决办法]
CvMoments moments;cvMoments(img,&moments,1);CvHuMoments hu;cvGetHuMoments(&moments,&hu);
[解决办法]
opencv有求矩的相应函数,也可以去matlab中文论坛看看,那上面有矩的matlab例子
[解决办法]
hu不变矩 的识别效果不是最好的 ,不建议使用,但是你如果学习的话 ,可是试试
[解决办法]
以前写的一个函数
//轮廓矩
void COpenCVTest::TestMoment()
{
CvRect r;
r.x = 120;
r.y = 100;
r.width = 20;
r.height = 20;
CvMoments m;
CvMat mat;
IplImage* src;
//8位图 必须为灰度图像
src = cvLoadImage("c:\\自然图2.bmp",0);
CvArr *arr;
arr = cvGetSubRect(src, &mat, r);
//获取矩
cvMoments(arr, &m, 0);
//获取空间矩
double m00 = cvGetSpatialMoment(&m,0,0);
//获取hu不变矩
CvHuMoments hu;
cvGetHuMoments(&m, &hu);
CString str;
str.Format("空间矩: m00 = %f \n Hu不变矩:h1 = %f, h2 = %f, h3 = %f, h4 = %f, h5 = %f, h6 = %f, h7 = %f, ",
m00,hu.hu1,hu.hu2,hu.hu3,hu.hu4,hu.hu5,hu.hu6,hu.hu7);
AfxMessageBox(str);
cvReleaseImage(&src);
cvWaitKey(0);
}
[解决办法]
恩,hu矩基本上是鸡肋!效果不是很好!