c - "bus error"带有(非常)简单的 opencv 程序(使用 Mac Os X)

标签 c macos gcc opencv

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

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 和 MacOs 10.8.5,gcc (i686-apple-darwin9-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5566)/p>

最佳答案

您不验证 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 上适合我。

关于c - "bus error"带有(非常)简单的 opencv 程序(使用 Mac Os X),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481385/

相关文章:

Python ctypes如何读取C代码修改的字符串

android - 在导入路径中找不到模块错误

linux - .vimrc 中的语法错误 : unexpected end of file and etc. 问题

c - 如何创建匹配来自不同文件夹的文件的 rake 规则?

c - 如何用 GCC 编译 D 和 C *.o 文件

c++ - UDP客户端-服务器程序使用gcc编译,而不是g++

c - C 中的可见性

c - 在 C 中创建递归数据结构的方法

java - 如何解决javax.servlet.ServletException : java. lang.UnsupportedClassVersionError?

java - Mac 的 RCP 应用程序 - Carbon 还是 Cocoa?