这是一个很容易解决的问题,我正在尝试重新排列平面中的形状,但首先我需要以正确的方式检测它们,我想出了这个非常低效的算法,但它确实工作正常,直到它到达两个形状,它们之间的距离为 < 1px:
这里是 python 伪代码:
#all pixels
for x in range(0, image.width):
for y in range(0, image.height):
if pixel is black:
# mark start of shapes
else:
if shape is open:
for r in range (0, image.height):
if pixel is black:
# found shape, keep shape open
else:
# close shape
else:
for r in range (0, image.height):
paint pixel gray # this draws the vertical gray lines in the example
这是生成的图像:
如您所见,灰色条绘制在形状之间,但当两个形状靠得太近(彼此之间的距离小于 1px)时,它不起作用
重要提示:对于垂直重叠的形状,我不需要让它工作。
我真的不关心 python/pillow 语法,如果你能很好地解释你的算法是做什么的,它是如何工作的,并且它看起来像 python/PIL 代码。
最佳答案
听起来您想同时查看当前像素列和前一列。如果两列中都没有黑色的 y 位置,则它是一个新形状(或没有形状)。
关于python - 当分离 < 1 px 时在 python 中使用 PIL 检测图像形状边缘的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31982110/