Java 以字节[]形式进行图像处理

Java 以字节[]形式进行图像处理,java,android,arrays,image,Java,Android,Arrays,Image,对不起,我英语不好 我想制作一个实时图像处理应用程序。(二值化、颜色反转等) 它需要速度,所以我想将其作为字节[]进行操作,而不转换为图像或位图 我从相机上得到的图像格式是YUV(NV21),但因为我不知道这种格式,我把它转换成JPEG 但它也没有像我预期的那样工作(我以为是每像素一个字节或者每像素三个字节) 所以 如何进行JPEG字节数组之类的操作(二值化、颜色反转) 或者如何将NV21格式的字节数组转换为RGB字节数组 我使用该方法将NV21转换为JPEG YuvImage yuvimage

对不起,我英语不好

我想制作一个实时图像处理应用程序。
(二值化、颜色反转等)

它需要速度,所以我想将其作为
字节[]
进行操作,而不转换为
图像
位图

我从相机上得到的图像格式是
YUV(NV21)
,但因为我不知道这种格式,我把它转换成JPEG

但它也没有像我预期的那样工作(我以为是每像素一个字节或者每像素三个字节)

所以

  • 如何进行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
    图像字节数组,我认为您可以使用setPreviewFormat(int)设置相机捕获的默认NV21格式以外的格式


    +我的设备不支持RGB格式,因此我必须转换它。这些链接可能会帮助您:请每个问题一个问题。这里的1和2应该是分开的。此外,您还需要定义manipulation()应该做什么,它现在太模糊了。此外,直接处理JPEG(其压缩数据)是不寻常的。您通常会将其转换为位图并进行处理。而且你永远不会使用JPEG作为中间格式,因为它有损-你会使用PNG,如果有的话。我会记住它。我还不习惯这里。@Gabetechan谢谢你的建议。是的,我试过了。但是我的设备不支持RGB格式,所以我必须转换它。