2017-07-26 9 views
1

Ich versuche, eine PNG-Datei mit opencv2 zu lesen, bekomme ich den folgenden Fehler.C++: libpng Konflikt auf 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 

Ich habe libpng 1.6.27 auf meinem System. Opencv wurde mit dem Befehl cmake -D BUILD_PNG=OFF /home/dpk/Desktop/opencv erstellt, um Konflikte zwischen der Bibliothek von opencv und der in meinem System zu vermeiden.

ich kompilieren Sie das Programm, das für libpng

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

Wie kann ich dieses Problem beheben Fehler png wie unten

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

Der Ausgang des ldd auf dem binären folgendes ergibt lesen muss?

+0

Wenn ich auf das 3rdparty-Verzeichnis im Repo schaue, gab es sogar im Jahr 2010 eine Version von LibPNG neuer als 1.2.53, also scheint es nicht, wo das herkommt. Haben Sie versehentlich eine andere Kopie von OpenCV auf Ihrem System installiert? Ist die Ausgabe von 'pkg-config opencv --cflags --libs 'sinnvoll? –

Antwort

1

Ausgehend von OpenCV CMakeLists.txt, mussten Sie WITH_PNG=OFF, nicht BUILD_PNG setzen.

+0

Würde dies die PNG-Unterstützung in OpenCV nicht vollständig deaktivieren? Das scheint nicht sehr wünschenswert, wenn man bedenkt, dass der Benutzer eine PNG-Datei mit opencv2 lesen möchte ... –

+0

Ich habe Eindruck, es ist genau das, was Asker will. Sie können natürlich keine Unterstützung für PNG haben, ohne auf eine Bibliothek verlinken zu müssen, aber ich denke, Asker verwendet libpng in seiner App direkt, nicht über OpenCV. – arrowd