2014-09-03 185 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。如果你是通過自制軟件安裝的,我會在它們的軟件包中說明它的一個問題(除非這種升級需要手動干預,即重新編譯依賴的二進制文件對照新的庫版本)。