2014-09-03 100 views
0

OpenCV用于在我的Mac OS(10.9,小牛)上正常工作。但是我升级了依赖库libpng后出现了一些问题。对于一个简单的程序:OpenCV库依赖libpng版本

#include <stdio.h> 
#include <opencv2/opencv.hpp> 

using namespace cv; 

int main(int argc, char** argv) 
{ 
    Mat image; 
    image = imread(argv[1], 1); 

    if(argc != 2 || !image.data) 
    { 
     printf("No image data \n"); 
     return -1; 
    } 

    namedWindow("Display Image", CV_WINDOW_AUTOSIZE); 
    imshow("Display Image", image); 

    waitKey(0); 

    return 0; 
} 

它由CMake顺利编译。但是当我运行它时,错误弹出:

dyld: Library not loaded: /usr/local/opt/libpng/lib/libpng15.15.dylib 
Referenced from: /usr/local/lib/libopencv_highgui.2.4.dylib Reason: 
image not found 
Trace/BPT trap: 5 

我检查了目录/ usr/local/opt/libpng/lib /。看来的libpng的当前版本是16,因为有符号链接,如

libpng.a   libpng16.16.dylib libpng16.dylib 
libpng.dylib  libpng16.a  pkgconfig 

我已经试过“酿造升级的OpenCV”和OpenCV是最新的版本(2.4.9)。通常opencv应该支持libpng16,因为它是最新的。我不知道libpng15和libpng16之间的区别。我应该卸载这个libpng16并安装libpng15吗?怎么做?

回答

0

其实我通过安装另一个版本的libpng(libpng15)解决了这个问题,这似乎是当前opencv版本(2.4.9)所需要的。

0

在更改ABI版本(更改了dylib名称)时,您应该针对新的libpng重新编译OpenCV。如果你是通过自制软件安装的,我会在它们的软件包中说明它的一个问题(除非这种升级需要手动干预,即重新编译依赖的二进制文件对照新的库版本)。