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