python - 当分离 < 1 px 时在 python 中使用 PIL 检测图像形状边缘的算法

标签 python algorithm math python-imaging-library image-manipulation

这是一个很容易解决的问题,我正在尝试重新排列平面中的形状,但首先我需要以正确的方式检测它们,我想出了这个非常低效的算法,但它确实工作正常,直到它到达两个形状,它们之间的距离为 < 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

这是生成的图像:

enter image description here

如您所见,灰色条绘制在形状之间,但当两个形状靠得太近(彼此之间的距离小于 1px)时,它不起作用

重要提示:对于垂直重叠的形状,我不需要让它工作。

我真的不关心 python/pillow 语法,如果你能很好地解释你的算法是做什么的,它是如何工作的,并且它看起来像 python/PIL 代码。

最佳答案

听起来您想同时查看当前像素列和前一列。如果两列中都没有黑色的 y 位置,则它是一个新形状(或没有形状)。

关于python - 当分离 < 1 px 时在 python 中使用 PIL 检测图像形状边缘的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31982110/

相关文章:

python - [x](y) 运算符到底是做什么的?

基于二进制标准将项目分配给组的算法

algorithm - 从 MAIN 生成的 PIN 和 PUK 的字符串模式/算法

mysql - 使用带有if表达式的sql计算多个值

math - 哪种度量表明数据平滑变化?

python - 在 Python 2.7.3 中将字段名称分配给 numpy 数组

python - Numpy 同时使用 fromiter 创建两个数组

java - 用于 python/java/c 的 OCSP 库?

java - Java 中的对象池模式

c# - 计算沿直线 A-B 与 A 的给定距离处的点