Ich möchte YUV420P
image (erhalten von H.264
stream) in RGB
umwandeln und dabei auch die Größe ändern, indem ich sws_scale
verwende.
Die Größe des Originalbildes ist 480 × 800
. Einfaches Konvertieren mit gleichen Abmessungen funktioniert gut.
Aber wenn ich versuche, die Dimensionen zu ändern, bekomme ich ein verzerrtes Bild mit dem folgenden Muster:
481 × 800
ergibt ein verzerrtes B & amp; W-Bild, das aussieht, als wäre es in der Mitte geschnitten 482 × 800
wird noch mehr verzerrt sein 483 × 800
ist verzerrt, aber in Farbe 484 × 800
ist ok (richtig skaliert). Nun folgt dieses Muster - die Skalierung funktioniert nur, wenn der Unterschied zwischen 4 und 4 liegt.
Hier ist ein Beispielcode, wie ich das Bild decodiere und umwandle. Alle Methoden zeigen "Erfolg".
%Vor%Wenn Sie ein Bitmap-Bild erstellen, MUSS die Breite des Bildes ein Vielfaches von 4 sein.
Sie müssen also die Breite ändern wie 480, 484, 488, 492 ...
Hier ist eine Methode, um zu einem Vielfachen von 4 zu wechseln
%Vor%Ich hoffe, Sie lösen das Problem.
Tags und Links c++ ffmpeg libavcodec yuv