2

我为 Android 操作系统开发应用程序,它可以帮助您在相机的帮助下进行绘图。应用程序以从相机槽捕获帧的方式工作onPreviewFrame(byte[] data, Camera camera),并从这里将图片转换为二进制黑/白。一般应用程序有效,但我有以下问题:

  1. 通过 onPreviewFrame 捕获图像真的很慢。现在我跳过帧,但方法仍然很慢。

    YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, width, height, null);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    yuvImage.compressToJpeg(new Rect(0,0,width, height), 100, baos);
    byte [] imageData = baos.toByteArray();
    Bitmap bmp = BitmapFactory.decodeByteArray(imageData , 0, imageData .length);
    bmp = Bitmap.createScaledBitmap(bmp, surfaceView.getMeasuredHeight(), surfaceView.getMeasuredWidth(), false);
    Bitmap bmps = ImageHelper.rotate(bmp, kot);
    

    有什么方法可以更快地获取图片吗?

  2. 我还注意到每几帧图片都不相同(不同的直方图),尽管手机完全静止并且光线相同。

4

1 回答 1

0

我认为您应该使用指出的 NDK。您可能也想在另一个线程上进行这种类型的处理,而不是在主线程中。

关于您的 (2) 的小问题。直方图有何不同?大多数相机传感器和处理会有所不同,并且由于 3A 算法的噪声和变化,很难产生精确的直方图。

于 2013-01-10T09:16:26.433 回答