すべて同じサイズで、すべて黒で書かれた記号の一連の画像があります。それらはすべて、単色の背景、背景色にかなり単純 (+、-、x、/、1-9) です。ときどき緑、ときどき青、ときどき赤に変わりますが、常に均一な色です。
これらの画像を、記号が黒で背景が常に白の白黒画像に変換しようとしています。
画像を比較してサインの重複を見つけることができるようにしています。
それでは、PILを使用してグレースケール変換を行う方法。
そして、比較を行うためのより良い方法はありますか?
ありがとう
すべて同じサイズで、すべて黒で書かれた記号の一連の画像があります。それらはすべて、単色の背景、背景色にかなり単純 (+、-、x、/、1-9) です。ときどき緑、ときどき青、ときどき赤に変わりますが、常に均一な色です。
これらの画像を、記号が黒で背景が常に白の白黒画像に変換しようとしています。
画像を比較してサインの重複を見つけることができるようにしています。
それでは、PILを使用してグレースケール変換を行う方法。
そして、比較を行うためのより良い方法はありますか?
ありがとう
だから、単純に白黒に変換する
black_and_white = im.convert('1')
ああ、あなたも使うことができますim.getcolors(maxcolors)
http://effbot.org/imagingbook/image.htm - ドキュメントはこちら
画像が実際に 2 色しかない場合は、 を使用するim.getcolors(2)
と、このリストに 2 つのアイテムしか表示されず、画像内のそれらを白と黒の色に置き換えることができます。
これが私がすることです:
scipy.ndimage
これらの 2 つの Python ライブラリを参照するとskimage
、このような単純な画像比較を簡単に処理できるようになります。
両方のライブラリで何ができるかを簡単に説明します。
>>> from scipy.ndimage import find_objects,label
>>> import scipy.misc
>>> img=scipy.misc.imread('filename.jpg')
>>> labeled,number=label(img) # (label) returns the lebeled objects while
# (number) returns the numer ofthe labeled signs
>>> signs=find_objects(labeled) #this will extract the signs in your image
#once you got that,you can simply determine
# if two images have the same sign using sum simple math-work.
ただし、上記のコードを使用するには、ラベル メソッドが機能するように背景を黒にする必要があります。skimage
>>> import skimage.morphology.label
>>> labeled=skimage.morphology.label(img,8,255) #255 for the white background
#in the gray-scale mode
#after you label the signs you can use the wonderful method
#`skimag.measure.regionprops` as this method will surely
# help you decide which two signs are the same.