[英]How to get pixel rgb values using matplotlib?
我需要找到圖像中的所有紅色像素並僅使用紅色像素創建我自己的圖像。 到目前為止,我一直在嘗試使用 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] 等值是什么意思,輸出為像素。 是否有捷徑可尋?
首先要了解的是圖像讀入時在數組中的表示方式。這里我讀入了一張 320x160 的彩虹圖像:
>>> img = plt.imread('rainbow.png')
>>> img.shape
(160, 320, 4)
這顯示了數組的維度——注意元組的最后一個元素是4
。 這些值代表紅色像素值、綠色像素值、藍色像素值和透明度或 alpha 值。
我們想找到具有特定紅色值的像素,所以我們只對其中的第一個感興趣。 讓我們把它們分開,這樣我們就可以使用它們了:
>>> r = img[:,:,0]
這隔離了與像素值的紅色相關的數組部分,由0
和1
之間的值表示。 我們現在想要隔離具有特定紅色值的像素的位置。 我們可以使用np.where
為此,在我們的新數組r
中找到值超過0.5
的元素(可以更改此值以滿足您對upper_threshold
和lower_threshold
的要求),並將它們替換為值1
和0
除此以外; 創建二進制圖像。
>>> binary_img = np.where(r > 0.5, 1, 0)
最后,我們只需要使用plt.imsave
保存這張圖片:
>>> plt.imsave('rainbow_red.png', binary_img , cmap='gray')
給出以下結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.