我需要帮助python编码一个循环,它会遍历图像中的所有像素。我需要找到所有白色像素,并保存第一个检测到的像素和最后一个像素的坐标。图像是一个阈值图像(只有白色和黑色像素)。我做了一个嵌套循环,但我不知道如何做评估。
j0pj023g1#
如果你愿意,你可以用嵌套循环来实现,但是那样会很慢很笨拙。假设您的图像是一个二维numpy数组,黑色值为0,白色值为255,如下所示:
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
1条答案
按热度按时间j0pj023g1#
如果你愿意,你可以用嵌套循环来实现,但是那样会很慢很笨拙。
假设您的图像是一个二维
numpy
数组,黑色值为0
,白色值为255
,如下所示:您可以按如下方式查找白色值(值等于255)的第一个和最后一个坐标:
导致:
或者,作为一个内衬: