gpt4 book ai didi

java - 如何改进Java中的反转+灰度运算符?

转载 作者:太空宇宙 更新时间:2023-11-03 21:15:17 24 4
gpt4 key购买 nike

我想对图像进行反转和灰度化。这是我的原始图片:
enter image description here

这是我想要实现的最终结果(使用 Paint.NET 生成):
enter image description here

但是使用在互联网上找到的一些(基本的?)Java 代码,我只能得到下面的图片: enter image description here

这是我使用的代码:

private static final byte[] invertTable;

static {
invertTable = new byte[256];
for (int i = 0; i < 256; i++) {
invertTable[i] = (byte) (255 - i);
}
}

private static BufferedImage grayScale(BufferedImage source) {
ColorConvertOp grayScale = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);

return grayScale.filter(source,null);
}

private static BufferedImage invertImage(final BufferedImage src) {
final int w = src.getWidth();

final int h = src.getHeight();

final BufferedImage dst = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);

final BufferedImageOp invertOp = new LookupOp(new ByteLookupTable(0, invertTable), null);

return invertOp.filter(src, dst);
}

// ...
BufferedImage sourceImage = ...
BufferedImage convertedImage = grayScale(invertImage(sourceImage));

如何改进上面的代码?

最佳答案

使用 ImgprocCore,我做到了

Mat src = new Mat();
Mat gray = new Mat();
src = Highgui.imread("...");
Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
Core.bitwise_not(gray, gray);
Highgui.imwrite("...", gray);

还有更接近的东西,虽然不完全相同:

OpenCV default grayscale mapping + bitwise invert

关于java - 如何改进Java中的反转+灰度运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29909193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com