我需要找到图像中所有的红色像素,然后用这些红色像素创建自己的图像。到目前为止,我一直在尝试使用matplotlib,因为我对它非常陌生。
def find_red_pixels(map, upper_threshold=100, lower_threshold =50):
"""Finds all red pixels of the "map" image and outputs a binary image file "map-red-pixels.jpg" """
red_map = []
for row in map:
for pixel in row:
print(pixel)
我是一个全新的图像处理的新手,并且已经尝试过了,但是我不明白输出为像素的值[0.0.01]等意味着什么。有简单的方法可以做到这一点吗?
1条答案
按热度按时间r8xiu3jd1#
首先要了解的是读入图像时图像在数组中的表示方式。下面我读入一个320 x160的彩虹图像:
这显示了数组的维度--注意元组的最后一个元素是
4
,这些值代表红色像素值、绿色像素值、蓝色像素值和透明度或alpha值。我们想找到具有特定红色值的像素,所以我们只对第一个感兴趣。让我们把它们分开,这样我们就可以处理它们了:
这将隔离与像素值的红色相关的阵列部分,由
0
和1
之间的值表示。现在,我们要隔离具有特定红色值的像素位置。我们可以使用np.where
执行此操作。在新数组r
中查找值大于0.5
的元素(此值可以更改以满足upper_threshold
和lower_threshold
的要求),并将其替换为1
,否则替换为0
;从而产生二进制图像。最后,我们只需要使用
plt.imsave
保存此图像:给出以下结果: