[英]Python: Greyscale image: Make everything white, except for black pixels
我試圖打開(已經是灰度)圖像並將所有非黑色像素更改為白色像素。 我實現了以下代碼:
from scipy.misc import fromimage, toimage
from PIL import Image
import numpy as np
in_path = 'E:\\in.png'
out_path = 'E:\\out.png'
# Open gray-scale image
img = Image.open(in_path).convert('L')
# Just for testing: The image is saved correct
#img.save(out_path)
# Make all non-black colors white
imp_arr = fromimage(img)
imp_arr = (np.ceil(imp_arr / 255.0) * 255.0).astype(int)
# Save the image
img = toimage(imp_arr, mode='L')
img.save(out_path)
使除黑色像素外的所有像素均為白色的計算非常簡單且也非常快。 對於我的用例來說,非常快速地工作非常重要,因此我使用了numpy。 由於某種原因,此代碼不適用於所有圖像嗎?
一個示例:下圖是輸入。
它包含一個灰色矩形和一個白色邊框。 輸出應該是完整的白色圖像,但是由於某種原因,輸出是黑色圖像:
使用其他圖像,效果很好。 我做錯了什么? 我認為浮點數在這里不應該成為大問題,因為此代碼不需要很高的計算精度即可工作。
非常感謝你
toimage需要一個字節數組,因此請轉換為uint8而不是int:
imp_arr = (np.ceil(imp_arr / 255.0) * 255.0).astype('uint8')
如果輸出中包含黑白像素,我似乎為int
工作,但如果它們都是白色,則不是。 我在文檔中找不到對此的任何解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.