做一个读取视频第一帧图像并检测角点的程序,用的是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");
}
是图片没有转化为单通道的原因。已经解决了,谢谢你,。。
代码有点长,提交不了...我给你链接帮忙看一下好吗?谢谢。。http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=23611
追答看下imgA中的nChannels是不是为1,cvGoodFeaturesToTrack只能检测单通道图像
你把IplImage* imgA=cvQueryFrame(capture);后的图像保存看看是不是正确的,其他部分没有问题
最后注意对资源的释放