我正在编写一个程序,将图像划分为域和范围。在此域中将 16X16 矩阵。我使用 PixelGrabber
来获取像素。我已经使用for循环进行迭代,但它需要花费很多时间来处理。在java中,任何替代方案都可以减少这个时间。我需要更好的表现。我们是否可以使用任何收藏品?
我的代码是:
int[] pix = new int[16 * 16];
long start = System.nanoTime();
for (int i = 0; i < 512; i += 16)
{
for (int j = 0; j < 512; j += 16)
{
PixelGrabber pg = new PixelGrabber(Im, i, j, 16, 16, pix, 0, 16);
pg.grabPixels();
makeStack(pix, i, j);
}
}
long end = System.nanoTime();
答案 0 :(得分:1)
你现在的问题是你不知道为什么它很慢。是的,它在上面的代码中的某处,但您无法告诉我们完全的位置。
您应该使用分析器来运行代码,以查看大部分时间的花费。
也就是说,对于图像处理,将整个图像转换为byte[]
或int[]
数组然后直接处理它通常是最有用的。