2014-09-03 3 views
0

OpenCV отлично работает на моей Mac OS (10.9, Mavericks). Но есть некоторые проблемы после того, как я обновил зависимую библиотеку 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/местные/Opt/Libpng/Библиотека /. Представляется, что текущая версия 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

Вы должны перекомпилировать OpenCV против нового libpng, поскольку он изменяет его версию ABI (имя dylib изменено). Если вы установили это через доморощенный, я бы сказал, что это проблема в их пакете (если этот вид обновления не требует ручного вмешательства, т. Е. Перекомпилирует зависимые двоичные файлы в отношении новой версии библиотеки).

Смежные вопросы