[英]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.