java - 将 RGB byte[][] 图像转换为 byte[] 的最佳方法

标签 java arrays image-processing

以 byte[][] 对象的形式保存帧数据,其中每一行对应一个(R,G,B) channel ,长度为(帧宽度*帧高度)。我希望以类似的方式将其转换为 byte[] 格式,如下所示:

byte[][] original_frame;
byte[] converted_frame = convert(original_frame);
ByteArrayInputStream bis = new ByteArrayInputStream(frame);
BufferedImage bImage2 = ImageIO.read(bis);

据我所知,ImageIO 采用 jpeg 格式。我是否需要将每一帧转换为 JPEG 图像,或者是否有更自然的方法来执行此操作?

最佳答案

我相信您是在问如何从二维数组转换为一维数组。如果所有行的长度均为 3,则如何执行此操作如下:

ArrayList<byte> x = new ArrayList<byte>();
for(int i=0; i<original_frame.length; i++){
   x.add(original_frame[i][0]);
   x.add(original_frame[i][1]);
   x.add(original_frame[i][2]);
}
byte[] converted_frame= new byte[x.size()];
for(int i=0;i<x.size();i++){
   converted_frame[i]=x.get(i);
}

希望这有帮助

关于java - 将 RGB byte[][] 图像转换为 byte[] 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59108602/

相关文章:

java - 在 IntelliJ 中使用 Breeze

c++ - 如何正确释放二维数组 C++

python - 如何从网络摄像头 OpenCV 裁剪圆形图像并删除背景

C++/CLI 将位图转换为 OpenCV Mat

java - joinPoint 中的 getAnnotations 方法未列出该方法的注释之一

java - Velocity 模板和 Java 字符串

javascript - ES6 Map Reduce 数组通过 Redux 状态的映射和填充变平

c++ - 使用 FaceRecognizer OpenCV 训练人脸以获得最佳结果的最佳方法是什么?

java - 我如何比较两个java文件的检查风格?

ruby - 如何在 Ruby 中创建哈希数组