zoukankan      html  css  js  c++  java
  • Android 关于获取摄像头帧数据解码

    由于Android下摄像头预览数据只能  ImageFormat.NV21 格式的,所以解码时要经过一翻周折.

    Camera mCamera = Camera.open();
    Camera.Parameters p = mCamera.getParameters();
    p.setPreviewFormat(ImageFormat.NV21);
    /*这是唯一值,也可以不设置。有些同学可能设置成 PixelFormat 下面的一个值,其实是不对的,具体的可以看官方文档*/
    mCamera.setParameters(p);
    mCamera.startPreview();

      

    下面是解码核心部分:

      @Override
      public void onPreviewFrame(byte[] data, Camera camera) {       
          Size size = camera.getParameters().getPreviewSize();       
          try{
              YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width, size.height, null);
              if(image!=null){
                  ByteArrayOutputStream stream = new ByteArrayOutputStream();
                  image.compressToJpeg(new Rect(0, 0, size.width, size.height), 80, stream);
                  Bitmap bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());
     
                       stream.close();
              }
          }catch(Exception ex){
              Log.e("Sys","Error:"+ex.getMessage());
          }
      }

    代码很简单。就是把YUV数据转成 Bitmap 就行了,系统提供 YuvImage 类。

  • 相关阅读:
    序言vue.js介绍
    python中end=''
    python文件的操作
    python异常
    python异常(理论知识)
    Uva 11300 Spreading the Wealth 中位数
    反转(开关问题) poj3276
    NEKO's Maze Game 思维
    Aaronson 一道思维题
    我开博客了
  • 原文地址:https://www.cnblogs.com/exmyth/p/4750367.html
Copyright © 2011-2022 走看看