2017-07-26 8 views
1

opencv2を使用してpngファイルを読み込もうとしていますが、次のエラーが発生します。C++:libpng conflict on opencv

libpng warning: Application built with libpng-1.2.53 but running with 1.6.27 
OpenCV Error: Assertion failed (dsize.area() > 0 || (inv_scale_x > 0 && inv_scale_y > 0)) in resize, file /home/dpk/Desktop/opencv/opencv/modules/imgproc/src/imgwarp.cpp, line 3484 

私は自分のシステムにlibpng 1.6.27を持っています。 OpenCvは、opencvのライブラリと私のシステムのライブラリとの間の競合を避けるため、コマンドcmake -D BUILD_PNG=OFF /home/dpk/Desktop/opencvを使ってビルドされました。

バイナリ上lddの出力は

libpng16.so.16 => /usr/local/lib/libpng16.so.16 

どのように私はこのエラーを修正することができますがlibpngをするために、以下を提供します

g++ preProcess.cpp -I/usr/local/include/libpng16 `pkg-config opencv --cflags --libs` -o preProcess 

以下のように私はPNG形式を読み取る必要があるプログラムをコンパイル?

+0

レポの3rdpartyディレクトリを見ると、2010年にも1.2.53より新しいバージョンのLibPNGが存在していたので、それはどこから来たのか分かりません。 OpenCVの他のコピーをあなたのシステムにインストールしたことがありますか?誤って使用していますか? 'pkg-config opencv --cflags --libs'の出力は意味がありますか? –

答えて

1

OpenCVのCMakeLists.txtから判断すると、BUILD_PNGではなく、WITH_PNG=OFFを設定する必要がありました。

+0

OpenCVでPNGサポートを完全に無効にすることはできませんか?ユーザーが「opencv2を使ってpngファイルを読む」と思っているので、それは非常に望ましいとは思われません。 –

+0

私はそれがまさにaskerが望んでいるという印象を持っています。もちろん、ライブラリにリンクせずにPNGをサポートすることはできませんが、AskerはOpenCVではなく、直接アプリケーションでlibpngを使用すると思います。 – arrowd