nv21 yuv420sp 水平映象翻轉實現

2021-10-24 18:34:21 字數 761 閱讀 8469

輸入資料是yuv,輸出是flipyuv, uv分量是交替儲存,uvsize剛好是height/2 * width, 下面的實現沒有考慮stride的情況。

void cvtnv21fliph(mat& myuv, mat& mflipyuv) 

}//flip vu data

int ylen = width * height;

for (int j = 0; j < height/2; j++)

}}

下面的實現加上stride引數

因為是nv21, yvu420sp格式,vstride實際上是vu資料一行的寬度(width + stride), ystride就是y分量一行的寬度(width + stride)

ystride = width + stride

vstride  = width + stride;

輸入引數h,w是輸入影象的實際寬和高,矩陣的rows = h+h/2, cols = ystride,ystride大於等於w.

void cvtnv21fliph(mat& myuv, int h, int w, int ystride, int ustride, int vstride, mat& mflipyuv) 

}//flip vu data

int ylen = ystride * h;

for (int j = 0; j < h/2; j++)

}}

NV21裁剪 縮放

nv21裁剪演算法 最近,在做android攝像頭預覽方法的事情,usb攝像頭出來的資料都是16 9的,無法正常在豎屏狀態下顯示,所以就要對攝像頭的資料進行裁剪處理,攝像頭出來的資料是nv21 就是yuv420sp 格式,libyuv的裁剪演算法是針對i420格式進行操作,裁剪nv21就得進行格式轉...