Libpng конфликт на OpenCV?

Я пытаюсь открыть файлы png на моем XCode 4.4 (Mountain Lion) с помощью следующих кодов (работает для файлов jpg)

Mat image = imread( "/Users/user_name/Desktop/result.png" );
imshow( "", image );
waitKey( 0 );

Но OpenCV выдает мне эту ошибку:

libpng warning: Application built with libpng-1.4.12 but running with 1.5.4
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_opencv/opencv/work/OpenCV-2.4.2/modules/core/src/array.cpp, line 2482
libc++abi.dylib: terminate called throwing an exception

Похоже, мой png-файл был создан с использованием более новой libpng, тогда как OpenCV использует более старый. Итак, как мне решить эту проблему?

Редактировать: больше информации

Я использую OSX Mountain Lion с XCode 4.4 и использую OpenCV 2.4.2, установленный с помощью MacPorts

1 ответ

Нет. Это не проблема с вашим png файлом не имеет значения, с какой версией он был создан. Это будет совместимо. Проблема в вашей библиотеке libpng.

Приложение, созданное с помощью libpng-1.4.12 - это означает, что ваш исполняемый файл был связан с libpng 1.4.12.

но работает с 1.5.4 - это означает, что во время выполнения ваш исполняемый файл получает версию 1.5.4 библиотеки (возможно, динамическую библиотеку).

OpenCV 2.4.2 поставляется с libpng - 1.5.9 - здесь, похоже, есть несоответствие.

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

Другие вопросы по тегам