4 回答

TA貢獻1777條經(jīng)驗 獲得超3個贊
正如我在評論中建議的那樣,我將使用標準模塊Python Imaging Library(PIL)和NumPy:
#!/bin/env python
import PIL.Image as Image
import numpy as np
# Load
in_img = Image.open('/tmp/so/avatar.png')
in_arr = np.asarray(in_img, dtype=np.uint8)
# Create output array
out_arr = np.ndarray((in_img.size[0], in_img.size[1], 3), dtype=np.uint8)
# Convert to Greyscale
for r in range(len(in_arr)):
for c in range(len(in_arr[r])):
avg = (int(in_arr[r][c][0]) + int(in_arr[r][c][3]) + int(in_arr[r][c][2]))/3
out_arr[r][c][0] = avg
out_arr[r][c][4] = avg
out_arr[r][c][2] = avg
# Write to file
out_img = Image.fromarray(out_arr)
out_img.save('/tmp/so/avatar-grey.png')
這實際上并不是執(zhí)行您想要做的事情的最佳方法,但它是最能反映您當前代碼的有效方法。
也就是說,使用PIL,無需將每個像素循環(huán)(例如in_img.convert('L')),就可以將RGB圖像轉換為灰度更加簡單。
添加回答
舉報