2017-02-02 8 views
2

ich nicht für Tango für eine ganze Weile entwickelt haben, aber vor kurzem ich auf die neueste Version von Tango-Java-API aktualisiert, und ich bemerkte, dass TangoImageBuffer Objekte haben jetzt format == 17, das ist:Tango Bildformat YCRCB_420_SP

public static final int YCRCB_420_SP = 17; 

Soweit ich mich erinnere, war es in früheren Versionen YV12 statt YCRCB_420_SP.

public static final int YV12 = 842094169; 

I verwendet OpenCV cvtColor Funktion anwenden wandeln es in BGR:

cv::Mat imageBgr(720, 1080, CV_8UC3); 
cv::Mat image(3 * 720/2, 1280, CV_8UC1); 
cv::cvtColor(image, imageBgr, cv::COLOR_YUV2RGB_NV12); 

Gibt es eine Möglichkeit YCRCB_420_SP mit OpenCV zu lesen? Ich habe versucht COLOR_YCrCb2BGR und ähnliche Modi, aber sie funktionieren nicht.

Offenbar COLOR_YUV2RGB_NV12 funktioniert immer noch und produziert etwas vernünftiges Ergebnis:

YCRCB_420_SP read as NV12

Aber es fühlt sich an wie Farben sind weg und alles sieht sehr gelb-ish. Oder bin ich paranoid?

Meine Frage ist, was ist der richtige Weg zu lesen YCRCB_420_SP Bilder? Ist es korrekt, OpenCV cv::COLOR_YUV2RGB_NV12 anzuwenden?

EDIT:

Ich versuchte NV21 mit als @fireant vorgeschlagen, aber diese eindeutig nicht funktioniert:

NV21

NV12 war viel näher an die ursprünglichen Farben. Der Code lautet:

cv::cvtColor(image, imageBgr, cv::COLOR_YUV2RGB_NV21); 
+1

Ich bin fest auf ein ähnliches Problem ... Ich arbeite mit Das Tango ** Unity ** SDK und unser Callback zum Abrufen von Kameradaten (TangoUnityImageData) sagt immer noch, dass es YV12-Frames gibt. Ich bin auf der Caporal Release. Aber diese Frames funktionieren nicht wie erwartet ... vielleicht hat es sich so verändert, wie du es zeigst, und ist im TangoUnity SDK falsch gekennzeichnet. https://developers.google.com/tango/apis/unity/reference/class/tango/tango-enums # class_tango_1_1_tango_enums_1ae177f114ecf6fd14e2f6152005ecfe0eaf4f398ec3ced7faeea573a7546fc3036 – Jethro

Antwort

2

Das Bildformat sollte YUV NV21 nicht NV12 sein. OpenCV kann ein Bild von that format to BGR or RGB konvertieren.

Nur eine Vermutung, es scheint, Sie verwenden RGB statt BGR, das Bild nach der NV21 mit BGR sieht wie folgt aus: enter image description here

+0

Ich habe 'NV21' versucht und es scheint auch nicht zu funktionieren. Bitte beachten Sie die neue Bearbeitung. –

+0

Sind Sie sicher, dass Sie RGB und nicht BGR wollen? COLOR_YUV2BGR_NV21 anstelle von COLOR_YUV2RGB_NV21? – fireant

+0

Siehe die aktualisierte Antwort. – fireant