gpt4 book ai didi

java - 对 BufferedImage 应用 FFT 给我一个 ArrayIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-02 10:32:05 26 4
gpt4 key购买 nike

我创建了一个BufferedImageRobot并尝试申请FFT algorithm来自 DataBufferInt 上的 Rosetta 代码由 Robot 生成,但在 fft 方法中失败,我不知道为什么。

Robot r = new Robot();
Rectangle rect = new Rectangle(10,10,200,200);
BufferedImage capture = r.createScreenCapture(rect);
// All data in getDataBuffer() seems to be negative
int[] pixels = ((DataBufferInt)buffer.getRaster().getDataBuffer()).getData();
Complex[] cinput = new Complex[pixels.length];
for (int i = 0; i < pixels.length; i++) {
cinput[i] = new Complex(pixels[i], 0.0);
}
// Fail (method from rosetta code)
FastFourierTransform.fft(cinput);

给我:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 40000
at engine.FastFourierTransform.fft(FastFourierTransform.java:42)
at engine.ImageProcessing.FFT(ImageProcessing.java:30)
at test.Testor.main(Testor.java:24)

我做错了什么?

最佳答案

您可以使用Catalano Framework ,您可以轻松地执行快速傅立叶变换。也适用于 MxN 大小的图像。

Robot r = new Robot();
Rectangle rect = new Rectangle(10,10,200,200);
BufferedImage capture = r.createScreenCapture(rect);

FastBitmap fb = new FastBitmap(capture);
fb.toGrayscale();

FourierTransform ft = new FourierTransform(fb);
ft.Forward();
fb = ft.toFastBitmap();

//Display the image
JOptionPane.showMessageDialog(null, fb.toIcon());

关于java - 对 BufferedImage 应用 FFT 给我一个 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53559772/

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