【发布时间】:2018-01-02 06:47:49
【问题描述】:
对不起,我英语不好。
我想做一个实时图像处理应用。(Binarization, color inverse...etc.)
它需要速度,所以我想将它作为byte[] 操作,而不是转换为Image 或Bitmap。
我从相机得到的图像格式是YUV(NV21),但是因为我不知道这种格式,所以我将它转换为JPEG。
但它也没有像我预期的那样工作。(我认为它会是每一个像素一个字节或每一个像素三个字节。)
所以,
- 我怎样才能将
manipulation(binarization, color inverse)这样的JPEG字节数组做到位? - 或者如何将 NV21 格式的字节数组转换为 RGB 字节数组?
并且我使用了将NV21转换为JPEG的方法。
YuvImage yuvimage = new YuvImage(bytes, ImageFormat.NV21, width, height, null);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
yuvimage.compressToJpeg(new Rect(0, 0, width, height), 100, outputStream);
我从onPreviewFrame(Camra.PreviewCallback) 得到yuv 图像字节数组。
【问题讨论】:
-
+我的设备不支持RGB格式,所以我要转换一下。
-
每个问题一个问题,请。这里的 1 和 2 应该是分开的。此外,您需要定义操作()应该做什么,现在它太模糊了。此外,直接处理 JPEG 是不寻常的——它的压缩数据。您通常将其转换为位图并进行处理。而且你永远不会使用 JPEG 作为中间格式,因为它有损——如果有的话,你会使用 PNG。
-
我会记住的。我还没习惯这里。
-
@GabeSechan 谢谢你的建议。