Android nv21
来源:互联网 发布:linux 打开80端口 编辑:程序博客网 时间:2024/06/18 04:25
/*package com.example.administrator.arcfacedemo;import android.graphics.Bitmap;import android.util.Log;import com.arcsoft.facedetection.AFD_FSDKEngine;import com.arcsoft.facedetection.AFD_FSDKError;import com.arcsoft.facedetection.AFD_FSDKFace;import java.util.ArrayList;import java.util.List;*//** * Created by Administrator on 2017/10/12. *//*public class FaceUtils { public static byte[] getNV21(int inputWidth, int inputHeight, Bitmap scaled) throws Exception { int[] argb = new int[inputWidth * inputHeight]; scaled.getPixels(argb, 0, inputWidth, 0, 0, inputWidth, inputHeight); byte[] yuv = new byte[inputWidth * inputHeight * 3 / 2]; encodeYUV420SP(yuv, argb, inputWidth, inputHeight); scaled.recycle(); return yuv; } private static void encodeYUV420SP(byte[] yuv420sp, int[] argb, int width, int height) throws Exception { final int frameSize = width * height; int yIndex = 0; int uvIndex = frameSize; int a, R, G, B, Y, U, V; int index = 0; for (int j = 0; j < height; j++) { for (int i = 0; i < width; i++) { a = (argb[index] & 0xff000000) >> 24; // a is not used obviously R = (argb[index] & 0xff0000) >> 16; G = (argb[index] & 0xff00) >> 8; B = (argb[index] & 0xff) >> 0; // well known RGB to YUV algorithm Y = ((66 * R + 129 * G + 25 * B + 128) >> 8) + 16; U = ((-38 * R - 74 * G + 112 * B + 128) >> 8) + 128; V = ((112 * R - 94 * G - 18 * B + 128) >> 8) + 128; // NV21 has a plane of Y and interleaved planes of VU each sampled by a factor of 2 // meaning for every 4 Y pixels there are 1 V and 1 U. Note the sampling is every other // pixel AND every other scanline. yuv420sp[yIndex++] = (byte) ((Y < 0) ? 0 : ((Y > 255) ? 255 : Y)); if (j % 2 == 0 && index % 2 == 0) { yuv420sp[uvIndex++] = (byte) ((V < 0) ? 0 : ((V > 255) ? 255 : V)); yuv420sp[uvIndex++] = (byte) ((U < 0) ? 0 : ((U > 255) ? 255 : U)); } index++; } } } public static void process(byte[] data, int width, int height) { AFD_FSDKEngine engine = new AFD_FSDKEngine(); // 用来存放检测到的人脸信息列表 List<AFD_FSDKFace> result = new ArrayList<AFD_FSDKFace>(); //初始化人脸检测引擎,使用时请替换申请的APPID和SDKKEY AFD_FSDKError err = engine.AFD_FSDK_InitialFaceEngine("CNHHFXxBzAPGt1NHQMCzpuV85LkPhBbHZNiA3L9babL8","2VFuoqBt7qvMSjrfxBYvKQLUiXVGeAvMxyvxAcRxKfGa", AFD_FSDKEngine.AFD_OPF_0_HIGHER_EXT, 16, 5); Log.d("com.arcsoft", "AFD_FSDK_InitialFaceEngine = " + err.getCode()); //输入的data数据为NV21格式(如Camera里NV21格式的preview数据),其中height不能为奇数,人脸检测返回结果保存在result。 err = engine.AFD_FSDK_StillImageFaceDetection(data, width, height, AFD_FSDKEngine.CP_PAF_NV21, result); Log.d("com.arcsoft", "AFD_FSDK_StillImageFaceDetection =" + err.getCode()); Log.d("com.arcsoft", "Face=" + result.size()); for (AFD_FSDKFace face : result) { Log.d("com.arcsoft", "Face:" + face.toString()); } //销毁人脸检测引擎 err = engine.AFD_FSDK_UninitialFaceEngine(); Log.d("com.arcsoft", "AFD_FSDK_UninitialFaceEngine =" + err.getCode()); }}*/
阅读全文
0 0
- Android nv21
- Android下NV21转ARGB的方法
- Android -- 将NV21图像保存成JPEG
- Android系统中Y'UV420p (NV21)到ARGB8888的转换
- 原YUV格式的解析 Android NV21 视频采集
- 使用opencv处理android中的yuv420sp(NV21)图像
- 原YUV格式的解析 Android NV21 视频采集
- Android NV21数据保存成JPG格式到SD卡
- Android NV21 byte[] 数据转化为JPEG byte[] 数据
- android 基于ffmpeg将视频采集的nv21转h264格式数据
- YUV420 NV12 NV21
- NV21 to NV12(YUV420SP)
- YUV420 NV12 NV21
- NV21转BGR图像
- YUV420 NV12 NV21
- Android YUV使用总结之Android常用的几种格式:NV21/NV12/YV12/YUV420P的区别
- Android libyuv应用系列(一)Android常用的几种格式:NV21/NV12/YV12/YUV420P的区别
- 【Android】YUV使用总结 —— Android常用的几种格式:NV21/NV12/YV12/YUV420P的区别
- leetcode--34. Search for a Range
- mongodb副本集中增加减少主机
- ESP8266怎么使用自己的云服务器进行无线升级(OTA教程)
- Java的fail-fast机制
- Android点击文字编辑进行缩放、移动和改变字体、颜色的实现
- Android nv21
- HTML5 拖放(Drag 和 Drop)功能开发——基础实战
- 二叉树层次遍历(包含之字形遍历也有称之为锯齿遍历)
- mongo创建oplog角色
- item_layout
- Pycharm设置行长为80(PEP8)
- ViewModel里的ICommand绑定时找不到问题
- 游戏化设计的精髓是结合用户历程进行UX设计
- Android Studio ADB网络调试总结