请大家来找错
最近在用opencv中的cvMatchShapes函数
MatchShapes
比较两个形状
double cvMatchShapes( const void* object1, const void* object2,
int method, double parameter=0 );
object1
第一个轮廓或灰度图像
object2
第二个轮廓或灰度图像
method
比较方法,其中之一 CV_CONTOUR_MATCH_I1, CV_CONTOURS_MATCH_I2 or CV_CONTOURS_MATCH_I3.
parameter
比较方法的参数 (目前不用).
函数 cvMatchShapes 比较两个形状。 三个实现方法全部使用 Hu 矩 (见 cvGetHuMoments)
下面是我的测试代码:
#include "cv.h"
#include "highgui.h"
#include <iostream>
using namespace std;
int main()
{
IplImage *test = cvLoadImage("test.bmp");
IplImage *f1= cvLoadImage("1.bmp");
IplImage *f2= cvLoadImage("2.bmp"); //所加载的图像都是大小相等的灰度图像
double i1 =cvMatchShapes((void*)test,(void*)f1,CV_CONTOURS_MATCH_I1,0);
cout<<i1<<endl;
double i2 =cvMatchShapes(test,f2,CV_CONTOURS_MATCH_I1,0);
cout<<i2<<endl;
cvReleaseImage(&test);
cvReleaseImage(&f1);
return 0;
}
但是编译没错,运行时出错,谁能看看是怎么回事吗?谢谢!!
[解决办法]
IplImage *test = cvLoadImage("test.bmp");
IplImage *f1= cvLoadImage("1.bmp");
IplImage *f2= cvLoadImage("2.bmp"); //所加载的图像都是大小相等的灰度图像
你没说是什么错误提示,没法判断会出什么错误,不过,这三条语句是动态加载图片,你没指定绝对路径,会不会加载图片失败,也就是这三个图片不在当前目录里,你加上绝对路径试试.
在调试时,当前目录是工程源代码所在的目录,并不是在DEBUG目录下
[解决办法]
我觉得既然是图片形状比较,那你输出的结果到底是什么?是数组,还数要的图形显示的结果,opencv好像这两个都能并行显示,但是显示对指针你这两个就不能混到一起了,