java.io.FileNotFoundException:在 Image.IO.write 上拒绝访问



>我将 64x128 像素的图像裁剪为 4x8 和 8x16 网格,并将它们保存在临时文件夹中以从中提取特征以进行图像分类。当我在多个图像的循环中执行此操作时(我裁剪第一个图像,获取 8x16 个子图像,提取每个子图像的特征,移动到下一个图像并覆盖现有的子图像(我在随机网格单元格中得到"找不到文件"异常,因为所述网格单元格的访问被拒绝。这仅在处理大量(例如 20+(图像时发生。我该如何解决这个问题?

我的裁剪部分代码:

package imageProcess;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Crop_Raster {
BufferedImage src;
BufferedImage dst;

public Crop_Raster(BufferedImage src) {
    super();
    this.src = src;
}
public void cropImage_4x8() throws IOException{
    int filenumber = 1;
    for (int y = 0;y<4;y++){
        for (int x = 0; x<8;x++){
            File output = new File("Temp/"+filenumber+".jpg");
            dst = src.getSubimage(16*x,16*y, 16, 16);   
            ImageIO.write(dst, "jpg", output);
            filenumber ++;
        }
    }
}
public void cropImage_8x16() throws IOException{
    int filenumber = 1;
    for (int y = 0;y<8;y++){
        for (int x = 0; x<16;x++){
            File output = new File("Temp/"+filenumber+".jpg");
            dst = src.getSubimage(8*x,8*y, 8, 8);   
            ImageIO.write(dst, "jpg", output);
            filenumber ++;
        }
    }
}

我在处理第 6 个训练图像的第二个子图像时出现以下异常:

java.io.FileNotFoundException: Temp2.jpg (Zugriff verweigert)
at java.io.RandomAccessFile.open0(Native Method)
at java.io.RandomAccessFile.open(Unknown Source)
at java.io.RandomAccessFile.<init>(Unknown Source)
at javax.imageio.stream.FileImageOutputStream.<init>(Unknown Source)
at com.sun.imageio.spi.FileImageOutputStreamSpi.createOutputStreamInstance(Unknown Source)
at javax.imageio.ImageIO.createImageOutputStream(Unknown Source)
at javax.imageio.ImageIO.write(Unknown Source)
at imageProcess.Crop_Raster.cropImage_8x16(Crop_Raster.java:38)
at svm.CreateVektor.createVector_8x16(CreateVektor.java:94)
at Main_Test.main(Main_Test.java:107)

错误发生在裁剪部分,我的其余方法应该可以正常工作。

清除每个图像后的 Temp 文件夹解决了这个问题。

最新更新