我有许多不重叠的彩色矩形的图像。每个矩形都是独一无二的颜色,我会提前知道颜色。 (奇怪的情况,我知道。)我试图找到每个矩形的像素位置和大小,我需要尽可能快。是否有任何有趣的技巧我可以用RMagick或类似的库来做到这一点,比通过每个像素迭代更容易?使用RMagick查找颜色位置
我目前的计划是沿着线的东西:
for each pixel (moving left-to-right, top-to-bottom):
if pixel color's in our list and we haven't seen it yet:
save pixel location as starting location for that color
else if pixel color's in our list and we've already seen it:
save pixel location as ending location for that color
(是的,我们可以优化并跳过像素的某些地区,如果我们知道他们是在一个矩形。)在循环结束,我们应该有每个矩形的第一个和最后一个像素,我们可以用它来推导出矩形的尺寸。但这对我来说似乎有点难看。
我可以做得更好吗?
您对最小矩形大小有限制吗?一个“矩形”可以是1x1像素吗?如果它们必须更大,您可以使用这些知识进一步优化。 –