簡體   English   中英

如何在 python 中使用 PIL 讀取圖像的 HSV 值?

[英]How to read HSV values of an image using PIL in python?

我正在嘗試獲取圖像中所有像素的 HSV 值。 我用普通洋紅色圖像測試了下面的代碼,得到的值與從在線轉換器獲得的值有很大不同。 我意識到的另一件事是結果數組的值都不高於 255(洋紅色的 H 值約為 300)

`from PIL import Image

infile = 'magenta.jpg'
saturation = 0

img = Image.open(infile)
width, height = img.size
img_hsv = img.convert('HSV')

for x in range(width-1):
   for y in range(height-1):
      hsv = img_hsv.getpixel((x,y))
      print(hsv)`

將“R”值乘以 360/255,將“G”值乘以 100/255,將“B”值乘以 100/255,得到相應的“H”、“S”和“V”值。 此外,在處理實際圖像時,我發現使用 image.getdata() 方法比循環遍歷每個 x 和 y 值並使用 image.getpixel(xy) 更容易、更有效:

from PIL import Image

infile = 'example.jpg'

img = Image.open(infile, 'r')
img_hsv = img.convert('HSV')
pixel_array = list(img_hsv.getdata())

hsv_pixel_array = []
for pixel in pixel_array:
    hsv_pixel_array.append(round((pixel[0]*(360/255), 1), round(pixel[1]*(100/255)), round(pixel[2]*(100/255))))

print(hsv_pixel_array)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM