【问题标题】:BufferedImageOp Kernel Convolution not doing anythingBufferedImageOp 内核卷积没有做任何事情
【发布时间】: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


【解决方案1】:

正如@haraldK 提到的,我的图像太大而无法注意到差异。代码按预期工作。

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 2016-10-02
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多