【发布时间】:2019-06-25 02:54:12
【问题描述】:
我正在尝试使用java.awt.image 中的BufferedImageOp 包对图像执行基本的内核卷积传递。这是我的代码:
BufferedImage img = null;
File f = null;
//read image
try {
f = new File("keys.JPG");
img = ImageIO.read(f);
} catch (IOException e) {
System.out.println(e);
}
float[] gaussian = {
1/16f, 1/8f, 1/16f,
1/8f, 1/4f, 1/8f,
1/16f, 1/8f, 1/16f,
};
BufferedImageOp op = new ConvolveOp(new Kernel(3, 3, gaussian));
BufferedImage dest = op.filter(img, null);
File outputfile = new File("image.jpg");
ImageIO.write(dest, "jpg", outputfile);
我的代码尝试加载图像keys.JPG,然后将此图像与高斯模糊内核卷积并将图像保存到文件image.jpg。当我运行代码时,它会处理一段时间然后终止并成功保存图像,但是当我比较原始图像和新图像时,它们是相同的。
在线查看一些代码示例,我的代码应该可以工作。我错过了什么吗?
谢谢
【问题讨论】:
-
我刚刚编译并运行了您的代码,它对我有用。也许效果没有您预期的那么明显?您的输入图像是否太模糊?还是太大了,让你看到缩小的图看不出区别?
-
感谢您的浏览!图片的尺寸是多少?
-
对不起。不记得了。刚用了一个,400x400左右。
-
你是对的!我使用的图像的分辨率太大而无法注意到差异。谢谢!
标签: java image-processing bufferedimage