Wie führe ich RGB-> YUV Konvertierung in C/C++ durch?Wie führe ich RGB-> YUV Konvertierung in C/C++ durch?
ich einige Bitmap haben .. RGB muss ich es konvertieren
Libs auf YUV? Tuts? Artikel?
Wie führe ich RGB-> YUV Konvertierung in C/C++ durch?Wie führe ich RGB-> YUV Konvertierung in C/C++ durch?
ich einige Bitmap haben .. RGB muss ich es konvertieren
Libs auf YUV? Tuts? Artikel?
Die Frage, wie die Konvertierung in C/C++ durchgeführt wird. ImageMagick ist natürlich C++, aber hier sind keine Funktionen dargestellt (plus ImageMagick ist unter einer eigenen Lizenz), also habe ich Leszeks Antwort abgelehnt. –
prüfen Sie diesen Artikel: http://www.fourcc.org/fccyvrgb.php Conversion ist ganz einfach, so dass Sie wahrscheinlich Ihre eigene Funktion auf der Grundlage dieser
Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16
Cr = V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128
Cb = U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128
Hallo Voyager ich brauche Hilfe, ich habe meinen Code, der yv12-> rgb565 ist, abgeladen. Genauso muss ich für yuv444 zu rgb888 arbeiten. Bitte führen Sie mich. Sie können meine letzte Frage für die Funktion sehen, die yuv12-> rgb565 konvertiert. – Abhineet
Beachten Sie, dass es mehrere Standards gibt, die den Farbraum steuern, den Sie in einer Yuv-Datei finden können (zB BT601, BT709, xvYcc) mit den meisten von denen, aber Sie müssen sie möglicherweise ändern, um die Kopien "richtig" zu bekommen (Sie müssen möglicherweise auch scot die Eingabe-oder Ausgabewerte, wenn Sie xvYcc oder nicht-8-Bit-Daten haben – tletnes
Sie könnten auch nur diese ganze Zahl versuchen wollen schreiben könnte Berechnungen (sollte schneller sein als Schwimmer)
#define CLIP(X) ((X) > 255 ? 255 : (X) < 0 ? 0 : X)
// RGB -> YUV
#define RGB2Y(R, G, B) CLIP((( 66 * (R) + 129 * (G) + 25 * (B) + 128) >> 8) + 16)
#define RGB2U(R, G, B) CLIP(((-38 * (R) - 74 * (G) + 112 * (B) + 128) >> 8) + 128)
#define RGB2V(R, G, B) CLIP(((112 * (R) - 94 * (G) - 18 * (B) + 128) >> 8) + 128)
// YUV -> RGB
#define C(Y) ((Y) - 16 )
#define D(U) ((U) - 128)
#define E(V) ((V) - 128)
#define YUV2R(Y, U, V) CLIP((298 * C(Y) + 409 * E(V) + 128) >> 8)
#define YUV2G(Y, U, V) CLIP((298 * C(Y) - 100 * D(U) - 208 * E(V) + 128) >> 8)
#define YUV2B(Y, U, V) CLIP((298 * C(Y) + 516 * D(U) + 128) >> 8)
// RGB -> YCbCr
#define CRGB2Y(R, G, B) CLIP((19595 * R + 38470 * G + 7471 * B) >> 16)
#define CRGB2Cb(R, G, B) CLIP((36962 * (B - CLIP((19595 * R + 38470 * G + 7471 * B) >> 16)) >> 16) + 128)
#define CRGB2Cr(R, G, B) CLIP((46727 * (R - CLIP((19595 * R + 38470 * G + 7471 * B) >> 16)) >> 16) + 128)
// YCbCr -> RGB
#define CYCbCr2R(Y, Cb, Cr) CLIP(Y + (91881 * Cr >> 16) - 179)
#define CYCbCr2G(Y, Cb, Cr) CLIP(Y - ((22544 * Cb + 46793 * Cr) >> 16) + 135)
#define CYCbCr2B(Y, Cb, Cr) CLIP(Y + (116129 * Cb >> 16) - 226)
's/mit actionscript/in C \/C++ /' macht es nicht zu einer neuen Frage http://stackoverflow.com/questions/1737712/how-to-perform-rgb-yuv-conversion-with-actionscript – voyager
Sie möchten einen RGB-Wert in YUV ändern? Oder ändern Sie eine RGB-Bitmap in eine YUV-Datei? Sie möchten eine Bilddateikonvertierung vornehmen, oder? – voyager
Ich bin sicher, dass es eine Möglichkeit gibt, diese Arbeit auf die gfx-Karte zu übertragen. Diese Art von Operation ist perfekt für die Grafikkarte. – fishfood