numpy Python -查找第一个和最后一个白色像素坐标

sshcrbum  于 2023-01-09  发布在  Python
关注(0)|答案(1)|浏览(144)

我需要帮助python编码一个循环,它会遍历图像中的所有像素。我需要找到所有白色像素,并保存第一个检测到的像素和最后一个像素的坐标。图像是一个阈值图像(只有白色和黑色像素)。我做了一个嵌套循环,但我不知道如何做评估。

j0pj023g

j0pj023g1#

如果你愿意,你可以用嵌套循环来实现,但是那样会很慢很笨拙。
假设您的图像是一个二维numpy数组,黑色值为0,白色值为255,如下所示:

image = np.random.choice([0,255], size=(10,10), p=[0.8, 0.2])

>>> image
array([[  0,   0, 255,   0,   0,   0,   0,   0,   0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0, 255,   0],
       [  0,   0,   0, 255,   0,   0,   0,   0,   0,   0],
       [  0, 255,   0, 255, 255,   0,   0,   0, 255, 255],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0],
       [255,   0,   0,   0, 255,   0,   0,   0,   0,   0],
       [  0, 255, 255,   0,   0,   0,   0,   0,   0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0],
       [255,   0,   0,   0,   0,   0,   0,   0,   0,   0],
       [255, 255,   0,   0, 255, 255, 255, 255,   0, 255]])

您可以按如下方式查找白色值(值等于255)的第一个和最后一个坐标:

white_pixels = np.array(np.where(image == 255))
first_white_pixel = white_pixels[:,0]
last_white_pixel = white_pixels[:,-1]

导致:

>>> first_white_pixel
array([0, 2])
>>> last_white_pixel
array([9, 9])

或者,作为一个内衬:

first_white_pixel, last_white_pixel = np.array(np.where(image == 255))[:,[0,-1]].T

相关问题