4

我知道“总线错误”通常是由于编程错误造成的。但我真的在三行程序中看不到这样的错误:

int main(int argc, char** argv)
{
  IplImage *src = cvLoadImage("/tmp/Name.tiff", CV_LOAD_IMAGE_COLOR);
  IplImage* res = cvCreateImage( cvSize( 2, 2), IPL_DEPTH_8U, 3 );
  cvSaveImage("/tmp/image.tiff", src);
  return 0;
} 

我编译如下:

gcc -I/Library/Frameworks/OpenCV.framework/Versions/A/Headers /usr/local/lib/libopencv_* test.c

执行给出总线错误

非常重要:如果我删除第二行(对 的调用cvCreateImage),它可以正常工作。

我在用着opencv 2.3 and MacOs 10.8.5, gcc (i686-apple-darwin9-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5566)

4

1 回答 1

1

您不验证是否IplImage *src = cvLoadImage("/tmp/Name.tiff", CV_LOAD_IMAGE_COLOR);成功。我认为它无法找到文件或解码它或其他任何东西。一切都只是糟糕的工程实践的结果。

$ cat src/bus.cpp 
#include <opencv2/opencv.hpp>

int main(int argc, char** argv)
{
  IplImage *src = cvLoadImage("/tmp/Name.tiff", CV_LOAD_IMAGE_COLOR);
  if(src==NULL) {
    printf("There is no /tmp/Name.tiff\n");
    exit(1);
  }
  IplImage* res = cvCreateImage( cvSize( 2, 2), IPL_DEPTH_8U, 3 );
  cvZero(res);
  cvSaveImage("/tmp/Name.tiff", src);
  return 0;
} 
$ 
$ convert ~/ScanImage001.png /tmp/Name.tiff
$ ./bus 
$

在 Mac 上为我工作。

于 2012-08-09T04:43:19.833 回答