小编Nic*_*cer的帖子

将Camera2 API与ImageReader一起使用

我正在尝试使用Galaxy S4上的Camera2 API捕获图像数据.ImageReader被用作表面提供者.已使用ImageFormat.YV12和ImageFormat.YUV_420_888尝试使用的图像格式,并生成相同的结果.

设置似乎很好,我使用ImageReader从ImageReader获取一个图像.图像有3个平面.缓冲区是预期的大小,Y平面的宽度*高度和其他两个平面的(宽度*高度)/ 4.

问题是我没有以两种方式正确获取数据.第一个问题是Y平面数据是镜像.这可以处理,虽然很奇怪所以我很好奇,如果这是预期的.

更糟糕的问题是其他两架飞机似乎根本没有正确提供数据.例如,如果图像大小为640x480,导致U和V缓冲区大小为76800字节,则只有缓冲区的前320字节为非零值.此数字不同,似乎不遵循不同图像大小之间的设定比例,但似乎在每种尺寸的图像之间保持一致.

我想知道在使用这个API时是否有一些我遗漏的东西.代码如下.

public class OnboardCamera {
  private final String TAG = "OnboardCamera";

  int mWidth = 1280;
  int mHeight = 720;
  int mYSize = mWidth*mHeight;
  int mUVSize = mYSize/4;
  int mFrameSize = mYSize+(mUVSize*2); 

  //handler for the camera
  private HandlerThread mCameraHandlerThread;
  private Handler mCameraHandler;

  //the size of the ImageReader determines the output from the camera.
  private ImageReader mImageReader = ImageReader.newInstance(mWidth, mHeight, ImageFormat.YV12, 30);

  private Surface mCameraRecieverSurface = mImageReader.getSurface();
  {
      mImageReader.setOnImageAvailableListener(mImageAvailListener, mCameraHandler);
  }

  private byte[] tempYbuffer = …
Run Code Online (Sandbox Code Playgroud)

android android-camera

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×1

android-camera ×1