重塑缓冲图像的形状并将双精度值存储在 txt 中



我想加载一个图像以将其大小调整为 100x100,以将其重塑为 1x100000 并将其保存在 txt 文件中。所以我在bufferedImage中读取它,我将其大小调整为100x100。重塑它并保存它的双重值的后续步骤是我正在寻找的:

            File img = new File(train_path + fileNames.get(i) + "/" + imageNames.get(i).get(j));
            BufferedImage in = ImageIO.read(img);
            BufferedImage newImage = new BufferedImage(in.getWidth(), in.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
            Graphics2D g = newImage.createGraphics();
            g.drawImage(in, 0, 0, null);
            g.dispose();
            BufferedImage newImg = new BufferedImage(100, 100, BufferedImage.TYPE_BYTE_GRAY);
            Graphics gr = newImg.createGraphics();
            gr.drawImage(newImage, 0, 0, 100, 100, null);
            gr.dispose();
            System.out.println(newImage.getHeight()+ " "+ newImage.getWidth());
            System.out.println(newImg.getHeight()+ " "+ newImg.getWidth());

您可以从初始图像中获取int数组:

int[] pixels = newImage.getRGB(0, 0, 100, 100, null, 0, 100);

这意味着在新数组中获取从 (0,0) 到 (100,100) 的 RGB 值,从索引 0 开始,偏移每行 100 的索引。

然后对于pixels中的每个int,灰度值由下式给出:

int gray = pixels[i] & 0xFF;

最新更新