簡體   English   中英

Android camera2 YUV 2048x1536 捕獲的圖像被拉伸(不是預覽)

[英]Android camera2 YUV 2048x1536 image captured is stretched (not the preview)

我正在嘗試捕獲 YUV 圖像但被拉伸。 我在https://github.com/googlearchive/android-Camera2Basic 之后使用 Android Camera2。 Android SDK 是 28。

當我使用 ImageReader 從方法 setOnImageAvailableListener() 捕獲 YUV 2048x1536 中的相機幀時,我面臨一個奇怪的行為。 捕獲被拉伸:

YUV 2048x1536 拉伸

我所做的:

pictureImageReader.setOnImageAvailableListener(
            reader -> {
              Image image = reader.acquireLatestImage();
              if(image != null){
                ByteBuffer buffer = image.getPlanes()[0].getBuffer();
                byte[] bytes = new byte[buffer.capacity()];
                buffer.get(bytes);
                Bitmap bitmapImage = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, null);
                image.close();
              }
            }, mBackgroundHandler);

要將圖像轉換為位圖,我使用了如何將 android.media.Image 轉換為位圖對象?

Image image = reader.acquireLatestImage();
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
Bitmap bitmapImage = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, null);

但是,如果我更改分辨率,我的捕獲就可以了(YUV 960x720):

YUV 960x720 可以

我不知道為什么 YUV 2048x1536 中的捕獲被拉伸,而 YUV 960x720 不是。 唯一的變化是分辨率

謝謝

設備是否在其流配置圖中將 2048x1536 列為支持的大小? 有時相機設備會接受他們實際上並未列出的分辨率,但隨后無法正確輸出它。

如果列出了該尺寸,那么不幸的是,這可能只是該設備相機實現上的一個錯誤。

(此外,看起來您正在捕獲 JPEG 圖像,而不是未壓縮的 YUV,在這里不一定重要)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM