opencv 图像检测角点时出了问题...

做一个读取视频第一帧图像并检测角点的程序,用的是cvGoodFeaturesToTrack()函数,调试时总出现“**exe 中的 0x753fd36f 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0029ea2c 处的 cv::Exception。”点中断后就显示“没有为任何调用堆栈框架加载任何符号。无法显示源代码。”搞了两天了。。求帮忙啊。!!感激不尽。!!!!!!
下面是程序(头文件就没复制过来了):
const int MAX_CORNERS = 500;
int main(int argc, char ** argv)
{
cvNamedWindow("1",0);
cvResizeWindow("1",300,200);
CvCapture* capture=cvCreateFileCapture("C:/Users/zzh/Desktop/未名命.avi");
IplImage* imgA=cvQueryFrame(capture);
cvShowImage("1",imgA);
cvWaitKey(0);
CvSize img_sz = cvGetSize( imgA );
IplImage * eig_image = cvCreateImage(img_sz, IPL_DEPTH_32F, 1);
IplImage * tmp_image = cvCreateImage(img_sz, IPL_DEPTH_32F, 1);
int corner_count = MAX_CORNERS;
CvPoint2D32f * cornersA = new CvPoint2D32f[ MAX_CORNERS ];
cvGoodFeaturesToTrack(
imgA,
eig_image,
tmp_image,
cornersA,
&corner_count,
0.01,
5.0,
0,
3,
0,
0.04
);
printf("cvgoodfeaturestotrack is done\n");
}

第1个回答  2012-12-10
检查下cvGoodFeaturesToTrack()函数输入格式是否正确:image ,eig_image ,temp_image;这三个格式分别是:uchar/F32,F32,F32

不是格式问题,确保imgA的取到图像的前提下,修改后面参数“3,0,04”为“3,1,0.04”试试追问

是图片没有转化为单通道的原因。已经解决了,谢谢你,。。

第2个回答  2012-12-09
代码看看追问

代码有点长,提交不了...我给你链接帮忙看一下好吗?谢谢。。http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=23611

追答

看下imgA中的nChannels是不是为1,cvGoodFeaturesToTrack只能检测单通道图像

你把IplImage* imgA=cvQueryFrame(capture);后的图像保存看看是不是正确的,其他部分没有问题

最后注意对资源的释放

本回答被提问者采纳
相似回答