opencv characters void segmentation

时间:2012-04-10 23:43:50

标签: opencv

我使用这个函数来分割字符图像,但是程序崩溃,有人可以帮我找到解决方案,为什么它会崩溃?

1 个答案:

答案 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));