簡體   English   中英

Python:灰度圖像:使所有內容變為白色,黑色像素除外

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

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