首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请大家来找错解决方法

2012-08-13 
请大家来找错最近在用opencv中的cvMatchShapes函数MatchShapes比较两个形状double cvMatchShapes( const v

请大家来找错
最近在用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好像这两个都能并行显示,但是显示对指针你这两个就不能混到一起了,

热点排行