2017-05-16 12 views
3

Ich möchte ein JPEG-Bild in Y'UV420p mit Turbo JPEG konvertieren. Ich denke, dass dies einige 2x2 Blöcke verwendet, wobei die doppelte Information im Y 'vorhanden ist, die es in jeder der U- und V-Komponenten gibt, aber ich konnte kein Beispiel finden, das dies tut.turbojpeg tjDecompressToYUV2 Datenformat

Wie extrahiere ich diese einzelnen Komponenten aus tjDecompressToYUV2 und wie ist das Format des Puffers, der für ein Bild reserviert ist, dessen Dimensionen ein Vielfaches einer Potenz von 2 sind?

Angenommen, ich habe ein Bild, das 1024 x 512 Pixel groß ist. Wie würde ich extrahiere jeden Wert ‚Y U und V aus dem folgenden Code:

constexpr auto height = 512u; 
constexpr auto width = 1024u; 
unsigned char buffer[height * width * 3/2]; 
... 
tjDecompressToYUV2(jpegDecompressor, jpegImage, jpegSize, buffer, width, 2, height, TJFLAG_FASTDCT); 
... 

dh. Wie werden die Komponenten aus dem Puffer extrahiert?

Antwort

3

Probieren Sie die Funktion tjDecompressToYUV, die Ihnen die 3 Farbräume auf 3 verschiedenen Ausgabepuffern bietet. Der Y-Puffer sollte ein Byte (8-Bit-Wert) für die Y-Komponente enthalten. Ich habe die Chroma-Komponenten nie benutzt, daher kann ich nicht sagen, wie sie gespeichert sind.

Was versuchen Sie zu tun, da es möglicherweise eine andere Möglichkeit gibt, dieses Problem zu lösen?