我使用这个函数来分割字符图像,但是程序崩溃,有人可以帮我找到解决方案,为什么它会崩溃?
答案 0 :(得分:0)
您需要查明导致崩溃的行。为此我可以用两种方式思考:
printf()
方法: printf()
方法涉及在程序中的每个函数调用之后发出printf()
调用,因此当您运行应用程序时,您可以在控制台中看到最后一条printf()
消息。这将帮助您找到导致崩溃的代码。例如:
printf("dbg10\n");
IplImage *img_cv = cvLoadImage("plaque.jpg");
printf("dbg20\n");
cvSetImageROI(img_cv,cvRect(8,10,60,35));
printf("dbg30\n");
IplImage *img_pl = cvCreateImage( cvGetSize(img_cv),img_cv->depth,img_cv->nChannels);
printf("dbg40\n");
cvCopy(img_cv,img_pl, NULL);
printf("dbg50\n");
cvResetImageROI(img_cv);
printf("dbg60\n");
//etc
从我在代码中看到的情况来看,前两个调用可能会使应用程序崩溃:如果cvLoadImage()
无法加载图像,它将返回NULL指针。由于下一个函数接收指针作为参数,它将尝试取消引用空指针,这可能会崩溃。解? 请务必查看搞怪返回您拨打的电话:
IplImage *img_cv = cvLoadImage("plaque.jpg");
if (!img_cv)
{
printf("Failed to load image.\n");
exit(1);
}
cvSetImageROI(img_cv,cvRect(8,10,60,35));