android camera yuv幀水平翻轉(zhuǎn)實例
Camera預覽時需要對yuv幀做水平翻轉(zhuǎn)處理,直接在onPreviewFrame(byte[] data, Camera camera)里調(diào)用Mirror函數(shù),處理完后的圖片和預覽效果成水平翻轉(zhuǎn)關(guān)系。
nv21的鏡像算法:
private void Mirror(byte[] src, int w, int h) { //src是原始yuv數(shù)組
int i;
int index;
byte temp;
int a, b;
//mirror y
for (i = 0; i < h; i++) {
a = i * w;
b = (i + 1) * w - 1;
while (a < b) {
temp = src[a];
src[a] = src[b];
src[b] = temp;
a++;
b--;
}
}
// mirror u and v
index = w * h;
for (i = 0; i < h / 2; i++) {
a = i * w;
b = (i + 1) * w - 2;
while (a < b) {
temp = src[a + index];
src[a + index] = src[b + index];
src[b + index] = temp;
temp = src[a + index + 1];
src[a + index + 1] = src[b + index + 1];
src[b + index + 1] = temp;
a+=2;
b-=2;
}
}
}
i420的鏡像算法:
private void Mirror(byte[] src, int w, int h) { //src是原始yuv數(shù)組
int i;
int index;
byte temp;
int a, b;
//mirror y
for (i = 0; i < h; i++) {
a = i * w;
b = (i + 1) * w - 1;
while (a < b) {
temp = src[a];
src[a] = src[b];
src[b] = temp;
a++;
b--;
}
}
//mirror u
index = w * h;//U起始位置
for (i = 0; i < h / 2; i++) {
a = i * w / 2;
b = (i + 1) * w / 2 - 1;
while (a < b) {
temp = src[a + index];
src[a + index] = src[b + index];
src[b + index] = temp;
a++;
b--;
}
}
//mirror v
index = w * h / 4 * 5;//V起始位置
for (i = 0; i < h / 2; i++) {
a = i * w / 2;
b = (i + 1) * w / 2 - 1;
while (a < b) {
temp = src[a + index];
src[a + index] = src[b + index];
src[b + index] = temp;
a++;
b--;
}
}
I420,YV12,NV12,NV21均屬于YUV420,以下為四種格式的排列順序:
I420: YYYYYYYY UUVV =>YUV420P
YV12: YYYYYYYY VVUU =>YUV420P
NV12: YYYYYYYY UVUV =>YUV420SP
NV21: YYYYYYYY VUVU =>YUV420SP
以上這篇android camera yuv幀水平翻轉(zhuǎn)實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Android實現(xiàn)圖片反轉(zhuǎn)、翻轉(zhuǎn)、旋轉(zhuǎn)、放大和縮小
- Android動畫之3D翻轉(zhuǎn)效果實現(xiàn)函數(shù)分析
- Android圖片翻轉(zhuǎn)動畫簡易實現(xiàn)代碼
- Android實現(xiàn)Flip翻轉(zhuǎn)動畫效果
- Android實現(xiàn)文字翻轉(zhuǎn)動畫的效果
- android使用FlipAnimation實現(xiàn)3D垂直翻轉(zhuǎn)動畫
- Android實現(xiàn)3D翻轉(zhuǎn)動畫效果
- Android利用Camera實現(xiàn)中軸3D卡牌翻轉(zhuǎn)效果
- Android實現(xiàn)卡片翻轉(zhuǎn)動畫
- android實現(xiàn)撲克卡片翻轉(zhuǎn)
相關(guān)文章
Android用Scroller實現(xiàn)一個可向上滑動的底部導航欄
本篇文章主要介紹了Android用Scroller實現(xiàn)一個可上滑的底部導航欄,具有一定的參考價值,有興趣的小伙伴們可以參考一下2017-07-07
Android TabLayout設(shè)置指示器寬度的方法
本篇文章主要介紹了Android TabLayout設(shè)置指示器寬度的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
淺談Android Classloader動態(tài)加載分析
這篇文章主要介紹了淺談Android Classloader動態(tài)加載分析,詳細的介紹了ClassLoader概念、分類,具有一定的參考價值,有興趣的可以了解一下2018-03-03
Android 判斷網(wǎng)絡(luò)狀態(tài)實例詳解
這篇文章主要介紹了Android 判斷網(wǎng)絡(luò)狀態(tài)實例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
Android實現(xiàn)WIFI和GPRS網(wǎng)絡(luò)的切換
這篇文章主要介紹了Android實現(xiàn)WIFI和GPRS網(wǎng)絡(luò)的切換,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-11-11

