ドキュメントの画像から文字を分離する小さなスクリプトを作成したかったのです。これまでのところ、2 つの文字の画像と、各ピクセルを比較する一連の関数があります。前の文字にピクセルがない場合は文字を作成し、そうでない場合はピクセルを文字に追加します。すでに 1 時間デバッグを試みましたが、何が問題なのかわかりません。ここに私のコードの一部があります:
def findChars():
im = Image.open("img-190.gif")
letters = []
for x in range(im.size[0]):
for y in range(im.size[1]):
px = im.getpixel((x,y))
if(px == 0):#black
found = False
for letter in letters:
for pixel in letter.pix:
if(isNextTo((x,y),pixel) == True):
found = True
letter.pix +=((x,y),)
#print len(letter.pix)
break
if(found == False):
letters.append(Letter((x,y)))
print "Appended"
print len(letters)
私が実装しているアルゴリズム: すべての文字が別々であると想定できるため、すべてのピクセルを調べて文字にグループ化できます。ピクセルに、すでに文字グループに含まれている隣接ピクセルがあるかどうかを確認します。答えが「はい」の場合は同じグループに追加し、そうでない場合は別のグループを作成します。最後に、個別のピクセルのグループがあります。
問題は、それらが正しく追加されていないことです。絵に2文字あると、49個のグループ(文字)が見つかります。
ここに私の他の関数コードがあります:
def isNextTo(spix,qpix):
DIST = 1
if(qpix[0]< spix[0]-DIST or qpix[0]> spix[0]+DIST):
return False
if(qpix[1]< spix[1]-DIST or qpix[1]> spix[1]+DIST):
return False
return True