Формат выглядит как I420 формат (также называемый YV12 ).
I420 - это формат YUV 4: 2: 0 с полностью упорядоченным упорядоченным форматом.
В YUV420 цветовой канал Y - это яркость (яркость) каждого пикселя.
U и V - это цветность (цветные) каналы.
Разрешение по U и V составляет половину Y по обеим осям (с понижением в 0,5 раза по каждой оси).
Иллюстрация I420:
Предположим, unsigned char* src
является указателем на буфер кадра, а разрешение составляет 640x480:
src -> YYYYYY
YYYYYY
YYYYYY
YYYYYY
src + 640*480 -> UUU
UUU
src + (320*240)*5 -> VVV
VVV
Я использовал Код MATLAB для восстановления изображения RGB из изображения, которое вы опубликовали.
Вот результат:
![enter image description here](https://i.stack.imgur.com/jIzM7.png)
Код MATLAB (только для справки):
I = imread('Test.png');
R = I(:,:,1);G = I(:,:,2);B = I(:,:,3);
T = zeros(size(R,1), size(R,2)*3, 'uint8');
T(:, 1:3:end) = R;T(:, 2:3:end) = G;T(:, 3:3:end) = B;
T = T';T = T(:);
Y = T(1:640*480);
U = T(640*480+1:640*480+640*480/4);
V = T(640*480+640*480/4+1:640*480+(640*480/4)*2);
Y = (reshape(Y, [640, 480]))';
U = (reshape(U, [320, 240]))';
V = (reshape(V, [320, 240]))';
U = imresize(U, 2);
V = imresize(V, 2);
YUV = cat(3, Y, U, V);
RGB = ycbcr2rgb(YUV);