android camera yuv幀水平翻轉(zhuǎn)實例
Camera預(yù)覽時需要對yuv幀做水平翻轉(zhuǎn)處理,直接在onPreviewFrame(byte[] data, Camera camera)里調(diào)用Mirror函數(shù),處理完后的圖片和預(yù)覽效果成水平翻轉(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)一個可向上滑動的底部導(dǎo)航欄
本篇文章主要介紹了Android用Scroller實現(xiàn)一個可上滑的底部導(dǎo)航欄,具有一定的參考價值,有興趣的小伙伴們可以參考一下2017-07-07Android TabLayout設(shè)置指示器寬度的方法
本篇文章主要介紹了Android TabLayout設(shè)置指示器寬度的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04淺談Android Classloader動態(tài)加載分析
這篇文章主要介紹了淺談Android Classloader動態(tài)加載分析,詳細的介紹了ClassLoader概念、分類,具有一定的參考價值,有興趣的可以了解一下2018-03-03Android 判斷網(wǎng)絡(luò)狀態(tài)實例詳解
這篇文章主要介紹了Android 判斷網(wǎng)絡(luò)狀態(tài)實例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04Android實現(xiàn)WIFI和GPRS網(wǎng)絡(luò)的切換
這篇文章主要介紹了Android實現(xiàn)WIFI和GPRS網(wǎng)絡(luò)的切換,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-11-11Android ListView滑動改變標(biāo)題欄背景漸變效果
這篇文章主要為大家詳細介紹了Android ListView滑動改變標(biāo)題欄背景漸變效果,透明轉(zhuǎn)變成不透明,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07