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:
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:
NV12 war viel näher an die ursprünglichen Farben. Der Code lautet:
cv::cvtColor(image, imageBgr, cv::COLOR_YUV2RGB_NV21);
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