国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android人臉識別Demo豎屏YUV方向調(diào)整和圖片保存(分享)

2019-10-22 18:19:09
字體:
供稿:網(wǎng)友

本博客包含三個常用方法,用于盛開Android版人臉識別Demo中豎屏使用時送入yuv數(shù)據(jù),但一直無法識別的情況。

1.首先可以嘗試順時針旋轉(zhuǎn)90°或270°,然后送入識別SDK。

2.旋轉(zhuǎn)方向后依然無法識別時,可以嘗試saveImg( ),保存本地檢查圖片是否符合要求。

圖片保存,人臉識別,Android

 /**  * 視頻順時針旋轉(zhuǎn)90  * 該方法僅僅在豎屏?xí)r候使用  * */ public static byte[] rotateYUV420Degree90(byte[] data, int imageWidth,          int imageHeight) {  byte[] yuv = new byte[imageWidth * imageHeight * 3 / 2];  int i = 0;  for (int x = 0; x < imageWidth; x++) {   for (int y = imageHeight - 1; y >= 0; y--) {    yuv[i] = data[y * imageWidth + x];    i++;   }  }  i = imageWidth * imageHeight * 3 / 2 - 1;  for (int x = imageWidth - 1; x > 0; x = x - 2) {   for (int y = 0; y < imageHeight / 2; y++) {    yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth) + x];    i--;    yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth)      + (x - 1)];    i--;   }  }  return yuv; } public static byte[] YUV420spRotate270(byte[] src, int width, int height) {  int count = 0;  int uvHeight = height >> 1;  int imgSize = width * height;  byte[] des = new byte[imgSize * 3 >> 1];  //copy y  for (int j = width - 1; j >= 0; j--) {   for (int i = 0; i < height; i++) {    des[count++] = src[width * i + j];   }  }  //u,v  for (int j = width - 1; j > 0; j -= 2) {   for (int i = 0; i < uvHeight; i++) {    des[count++] = src[imgSize + width * i + j - 1];    des[count++] = src[imgSize + width * i + j];   }  }  return des; } private int i = 1; private String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/0Face/"; private Calendar now = new GregorianCalendar(); private SimpleDateFormat simpleDate = new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault()); private String fileName = simpleDate.format(now.getTime()); /**  * @param data yuv圖像數(shù)據(jù)  * @param width   * @param height  */ public void saveImg(byte[] data, int width, int height) {  File dir = new File(path);  if (!dir.exists()) dir.mkdirs();  File f = new File(path + (fileName + "-" + i++) + ".jpg");  FileOutputStream fOut = null;  try {   //yuv轉(zhuǎn)成bitmap   YuvImage image = new YuvImage(data, ImageFormat.NV21, width, height, null);   ByteArrayOutputStream stream = new ByteArrayOutputStream();   image.compressToJpeg(new Rect(0, 0, width, height), 80, stream);   Bitmap bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());   //bitmap保存至本地   fOut = new FileOutputStream(f);   bmp.compress(Bitmap.CompressFormat.JPEG, 100, fOut);   fOut.flush();   fOut.close();   bmp.recycle();   stream.close();  } catch (Exception ex) {   Log.e("Sys", "Error:" + ex.getMessage());  } }

以上這篇Android人臉識別Demo豎屏YUV方向調(diào)整和圖片保存(分享)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 漳浦县| 南召县| 湘阴县| 汕尾市| 舞钢市| 交城县| 灵寿县| 金寨县| 洪江市| 郧西县| 佛学| 台南县| 石城县| 南汇区| 芜湖县| 南通市| 云霄县| 汉中市| 江门市| 莲花县| 东莞市| 泰兴市| 施甸县| 左权县| 诏安县| 日土县| 永年县| 阿城市| 邵东县| 永德县| 城固县| 凉山| 长治市| 邵东县| 元谋县| 台州市| 双峰县| 砚山县| 奇台县| 汾西县| 封丘县|