【发布时间】:2018-11-11 18:56:25
【问题描述】:
我写了一个应用程序,其中一些点是浮动的,如果我为一个点分配一个点,它会在这个位置上移动。现在我想加载一个图像,将其转换为单色图像(只有纯黑色或白色像素 - 没有灰色阴影)并使每个点浮动到它代表黑色像素的位置。 我已经以这种方式加载和转换图像并将像素提取为一维字节[]。我已经设法使用以下代码迭代了这个数组:
int stride = width * 4;
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
{
int index = y * stride + 4 * x;
// array[index] <- Red
// array[index + 1] <- Green
// array[index + 2] <- Blue
// array[index + 3] <- Alpha
}
字节数组包含 4 个字节 (RGBA) 的每个像素。所以数组长度是 ImageHeight*ImageWidth*4 字节。像素是黑色 (0, 0, 0, 255) 或白色 (255, 255, 255, 255)。
我现在的问题是我无法仅用 n 个点来正确近似图像的黑色区域。在大多数情况下,我的浮动点要比阵列中的黑色像素少得多。所以我需要的是一种方法,它可以给我一个 Point[],其中包含 n 个 Points,这些点将尽可能好地表示图像的黑色区域。有人可以帮帮我吗?
【问题讨论】: