Ich habe einen unsigned char*
Puffer mit Daten eines JPEG-Bilds. Ich möchte dieses Bild mit C++ und opencv anzeigen. Wenn ich das tue:opencv lesen JPEG-Bild aus dem Puffer
Mat img(Size(640, 480), CV_8UC3, data);
namedWindow("image", 1);
imShow("image", img);
Ich bekomme eine laute Durcheinander von Pixeln.
Ich nehme an, es liegt daran, dass die Daten jpeg (mit einem Header) ist. Da dies funktioniert:
Mat imgbuf(Size(640, 480), CV_8UC3, data);
Mat img = imdecode(imgbuf, CV_LOAD_IMAGE_COLOR);
aber ich kann die imdecode Funktion nicht verwenden, da es aus highgui.h ist, die auf GTK 2, und in meinem Projekt basiert ich GTK verwenden 3.
Also, wie kann ich Anzeige der Pufferdaten? Gibt es eine Möglichkeit, das JPEG-Bild anders als imdecode in opencv zu dekodieren, wenn das das Problem ist. Ich möchte Opencv mit Qt nicht wirklich neu aufbauen wollen ...
Irgendwelche anderen Vorschläge?
(mit Linux)
können Sie nicht verwenden 'libjpeg' zur Decodierung und mit ihr geschehen? Was ist das Problem mit dem? – mmgp
@mmgp ich werde libjpeg versuchen, dachte nur, ich das tun könnte Gleiches, ohne eine andere Bibliothek einzubinden – Matekk
opencv wird JPEG-Bild nicht laden, wenn Sie das tun nicht 'libjpeg', also ist keine andere Bibliothek enthalten. – mmgp