Libpng对OpenCV的冲突?

时间:2012-08-08 13:16:29

标签: opencv conflict libpng conflicting-libraries

我正在尝试使用以下代码在我的XCode 4.4(Mountain Lion)上打开png文件(适用于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,并使用MacPorts安装OpenCV 2.4.2

1 个答案:

答案 0 :(得分: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 - 这里似乎存在不匹配。

无论如何,为了解决这个问题,请确保在链接期间链接到使用OpenCV构建的libpng。如果您是动态链接,请确保您的库路径包含OpenCV的第三方库路径,优先于其他路径。