![](/img/trans.png)
[英]Using PIL to insert greyscale image into RGB image by inserting greyscale values in RGB tuple
[英]Python Pil Change GreyScale Tif To RGB
我有一個灰度 TIF 文件。 我需要將它轉換為 RGB/以我可以使用的方式從中讀取。
img = Image.open(GIF_FILENAME)
rgbimg = img.convert('RGB')
for i in range(5):
print rgbimg.getpixel((i, 0))
convert.("RGB") 將自動生成所有內容 (255,255,255),即使圖片是非常暗的大部分黑色圖片。
如果我只是閱讀灰度數字,我會得到大約 1400 到 1900 的數字。
我還需要將圖片的副本另存為 RGB Jpeg。 有問題的圖片:[這里]: http : //imgur.com/kEwfFs3
我該怎么做呢?
關於什么:
img = Image.open(GIF_FILENAME)
rgbimg = Image.new("RGBA", img.size)
rgbimg.paste(img)
rgbimg.save('foo.jpg')
[編輯]
創建了一個測試:
from PIL import Image
from collections import defaultdict
import pprint
img = Image.open("kEwfFs3.png")
rgbimg = Image.new("RGBA", img.size)
rgbimg.paste(img)
found_colors = defaultdict(int)
for x in range(0, rgbimg.size[0]):
for y in range(0, rgbimg.size[1]):
pix_val = rgbimg.getpixel((x, y))
found_colors[pix_val] += 1
pprint.pprint(dict(found_colors))
rgbimg.save('kEwfFs3.jpg')
並且輸出:
{(0, 0, 0, 255): 747802,
(1, 1, 1, 255): 397,
(2, 2, 2, 255): 299,
(3, 3, 3, 255): 255,
(4, 4, 4, 255): 221,
(5, 5, 5, 255): 200,
(6, 6, 6, 255): 187,
(7, 7, 7, 255): 138,
(8, 8, 8, 255): 160,
(9, 9, 9, 255): 152,
(10, 10, 10, 255): 122,
(11, 11, 11, 255): 116,
(12, 12, 12, 255): 144,
(13, 13, 13, 255): 117,
(14, 14, 14, 255): 117,
(15, 15, 15, 255): 102,
(16, 16, 16, 255): 119,
(17, 17, 17, 255): 299641,
(18, 18, 18, 255): 273,
(19, 19, 19, 255): 233,
.................... etc .......
.................... etc .......
(249, 249, 249, 255): 616,
(250, 250, 250, 255): 656,
(251, 251, 251, 255): 862,
(252, 252, 252, 255): 1109,
(253, 253, 253, 255): 1648,
(254, 254, 254, 255): 2964175}
這是您所期望的。 你的輸出不一樣嗎?
我在轉換為 RGB 的I;16
(16 位灰度)tiff 中遇到了同樣的問題。 對手冊的一些挖掘揭示了問題與 lut PIL 用於將灰度圖像轉換為 RGB 的問題有關。 它在 8 位色彩空間中工作; 也就是說,它會剪輯 255 以上的所有值。因此,一個快速而簡單的解決方案是使用您自己的 lut 手動轉換為 RGB,使用點方法縮放范圍內的值,如下所示:
path = 'path\to\image'
img = Image.open(path)
img.point(lambda p: p*0.0039063096, mode='RGB')
img = img.convert('RGB')
img.show() # check it out!
我通過將 256 除以 16 位等效值 65535 來確定“lut”公式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.