web-dev-qa-db-ja.com

Python / PILを使用した画像の概要

Appleのカラー写真を持っていますが、python/PILでそのアウトライン(白の内側、背景の黒)だけを表示するにはどうすればよいですか?

19
user1212200

このようなものが動作するはずです。

from PIL import Image, ImageFilter

image = Image.open('your_image.png')
image = image.filter(ImageFilter.FIND_EDGES)
image.save('new_name.png') 

それでもあなたが探している結果が得られない場合は、Prewitt Edge検出、Sobel Edge検出、またはCanny Edge検出のいずれかをPILとPythonを使用して実装してみてください。他のライブラリは関連 question および次の example

エッジ検出だけでなく、粒子の検出/分析を行う場合は、 py4ij を使用して、リンクしたImageJメソッドを呼び出して期待どおりに呼び出すことができます同じ結果、または別のパーティクル分析Pythonライブラリ [〜#〜] eman [〜#〜] を試すか、パーティクルを記述できますPIL、S​​ciPy、NumPyを使用した検出アルゴリズム。

29
Appleman1234

オブジェクトと背景のコントラストがかなり良い場合

from PIL import Image
image = Image.open(your_image_file)
mask=image.convert("L")
th=150 # the value has to be adjusted for an image of interest 
mask = mask.point(lambda i: i < th and 255)
mask.save(file_where_to_save_result)

より高いコントラストが(3色の)1つにある場合、イメージをグレースケールに変換する代わりに、バンドに分割することができます。

画像や背景がかなり複雑な場合は、より高度な処理が必要になります

4
cur4so