2009-07-03 4 views
1

画像があります。画像を黒くクリーニングする

私はこのイメージをピクセル単位で行きたいと思います。黒でないピクセルはすべて白くしてください。これはどうすればいいですか?

(Python)

ありがとうございます!

答えて

3

この理由で特に存在するpoint関数を使用する必要があります。

converter= ((0,) + 255*(255,)).__getitem__ 
def black_or_white(img): 
    return img.convert('L').point(converter) 
+0

これは高速です。 – Kiv

+0

"L"画像の場合、コンバータ機能は最大256回呼び出されることを考慮すると(Image.pointのドキュメントを参照)、ナディアが提案したものより高速ですが、それより高速です:) – tzot

1

あなたは次のライブラリをチェックアウトする場合があります:

特に

http://effbot.org/imagingbook/image.htm

im.getpixel(xy) => value or tuple 

im.putpixel(xy, colour) 
+2

putpixel関数が非常に遅い –

+0

お役立ち情報私はPILを使ったことが一度もありませんでした。 – Scanningcrew

6

最も効率的な方法は、ポイント機能を使用することです

def only_black(band): 
    if band > 0: 
     return 255 
    return 0 
result = im.convert('L').point(only_black) 

これはPIL documentationこれについて述べているものである。

バイレベル画像 に変換する(モードが「1」)、元画像が白黒に変換された第1 あります。 127より大きな結果値は で、次に白に設定され、画像は ディザリングされています。他のしきい値を使用するには、 ポイントメソッドを使用してください。

+0

only_black関数のband引数は0≦band <256の整数であるため、only_blackには次のコード行しか含めることができません:return bandと255 – tzot

関連する問題