輸入資料是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就得進行格式轉...