2

次のコードを使用して、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は古いものを使用しています。では、この問題を解決するにはどうすればよいですか?

編集:詳細

XCode 4.4 で OSX Mountain Lion を使用しており、MacPorts を使用してインストールされた OpenCV 2.4.2 を使用しています。

4

1 に答える 1

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 とリンクしていることを確認してください。動的にリンクしている場合は、librarypath に OpenCV のサードパーティ lib パスが他のパスよりも先に含まれていることを確認してください。

于 2012-08-09T04:09:43.027 に答える