Если изображение yuv420 плоское, это то, как кодируются данные изображения.
Планарное значение означает сначала раздел y, затем раздел U и затем раздел V.
Учитывая ширину изображения w и высоту изображения h.
Общий размер изображения - ш * ч * 3/2
Секция Y, также называемая люминесценцией, занимает ш * ч.
для каждого блока 2x2 в секции Y есть пиксель U и V пиксель.
секция U идет следующей, занимает (w / 2) * (h / 2) и располагается со смещением w * h от начала изображения.
раздел V следует, занимает (w / 2) * (h / 2) и укладывается со смещением (w * h) + ((w * h) / 4).
Чтобы повернуть изображение на 90 градусов, необходимо скопировать этот массив w * h в массив h * w
Как уже упоминалось в посте выше, вам просто нужно скопировать каждый из 3-х вышеуказанных блоков Y, U, V. отдельно.
Начните с раздела Y. 1-й пиксель, который нужно скопировать, имеет значение (h-1) * w в массиве источников, скопируйте его в (0,0) целевого массива. 2-й пиксель имеет значение (h-2) * w и т. Д. ...
Помните, что секции U и V только (w / 2) * (h / 2)
Затем скопируйте раздел U. Первый пиксель, который будет скопирован, находится в (w * h) + (((h / 2) -1) * (w / 2)) в массиве источников, скопируйте его в (h * w) + (0,0) в Массив назначения. 2-й пиксель имеет значение (w * h) + (((h / 2) -2) * (w / 2)) и т. Д. ...
Наконец, скопируйте раздел V. Первый пиксель, который нужно скопировать, находится в ((w * h) + (w * h / 4)) + (((h / 2) -1) * (w / 2)) в массиве источников, скопируйте его в (h * w) + (w * h / 4) + (0,0) в массиве назначения. 2-й пиксель имеет значение ((w * h) + (w * h / 4)) + (((h / 2) -2) * (w / 2)) и т. Д. ...
Полученный таким образом массив получателей содержит повернутое на 90 градусов изображение.