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, опережая все остальные.