所以我有这段代码
for x in range(x1,x2):
for y in range(y1, y2):
cpixel = pixels[x, y]
if bw:
bw_value = int(round(sum(cpixel) / float(len(cpixel))))
all_pixels.append(bw_value)
title = "Averaged (B&W) Pixel Values"
else:
if lumi:
luma = (0.3 * cpixel[0]) + (0.59 * cpixel[1]) + (0.11 * cpixel[2])
all_pixels.append(luma)
title = "Pixel Luminosity Values"
else:
if round(sum(cpixel)) / float(len(cpixel)) > 100:
all_pixels.append(255)
else:
all_pixels.append(0)
title = "Pixel Binary Transform Values"
从这里获取并修改了一点从PIL 获取像素值列表,以给出边界区域(用户选择)内的像素值列表(all_pixels)。
在记录了一系列相似的值后,我试图找出一种有效的方法来检测列表中的变化。由于该列表似乎从上到下和从左到右列出了像素值。在我将使用它的场景中,它会有一个相似值的列表,直到它到达图像的一个区域,然后值将开始来回切换,直到值再次稳定在一个新值附近。
我感兴趣的是跟踪这两者之间的边界,我想检测这个边界在哪里以及它是向左还是向右移动。除了必须检查每个值附加到 all_pixels 时,我真的想不出任何其他方法,然后只追溯坐标。
但即使这看起来也相当粗略,因为即使我在下一个显着不同的值被视为显着变化(而不仅仅是异常值)之前将任意数量的值设置为相同,之后值开始在旧值之间切换和新的。
我想理想情况下,我需要为此边界区域/线的坐标生成某种最佳拟合线。我只需要一些想法如何解决这个问题。