2016-11-11 16 views
0

私はピクセルで作業しています。行優先順序で横断するとき、下の図の最初の黒ピクセルの位置を探したいと思います。これは、画像上の数字と画像上のすべての数字の合計を認識するためのプロジェクトの一部です。イメージ処理が機能しない単純なpythonコード

for a in range(0,80): 
    for b in range(0,80): 
     if (imgt[a,b,0]==0 and imgt[a,b,1]==0 and imgt[a,b,2]==0): 
      x=a 
      y=b 
      break 
     break 
    break 

print x,y 

、について説明

コードは次のようになります - 私は、座標を通過するループのための2つがあります(画像は80×80であるので、rangeである(0,80))。 forループでは、ピクセルが黒かどうかをチェックしています。黒の場合は、xaの座標値が割り当てられ、ybです。

期待される出力: - プログラムは最終的に(29,27)でなければならない最初の左上の黒ピクセルの座標を書き込む必要があります。

実際の出力: - 私は常に(56,27)を印刷します。 ここで何が問題になるかも知っていますか?私はとてもシンプルだと思われますが、私は何をすべきかわかりません。

ありがとうございます!

enter image description here

+0

最初の行で0のインデックスからクロッピングしています。 (28:56、28:56) – saurabheights

+0

私は理解していない、あなたはこのことを考えるimgtt = imgt [0:28,0:28]?私はちょうど28x28の寸法の画像を作りたいと思っていました。それは28の数字を含むどんな間隔でもいいと思います.. – slomil

+0

あなたは正しいです。 imgttは使用されていません。私はちょうど最初の行と結論のイメージを見ました。私の間違い。問題は、あなたがbreakの使用が両方のループのためにあなたを出ると仮定しているように見えます。 breakは1つの外側のループからのみ終了するため、おそらく黒ピクセルの最初の列から最後の行に移動します。 – saurabheights

答えて

0

問題は、複数のbreak文の使用から生じたものです。コードを別の関数に移動し、break文の代わりにreturnを使用すると、それが解決されます。

def glteme(): 
    for a in range(0,80):    
     for b in range(0,80): 
      if (imgt[a,b,0]==0 and imgt[a,b,1]==0 and imgt[a,b,2]==0): 
       return a,b 

blackPixelCoordinate = glteme() 
print blackPixelCoordinate[0], blackPixelCoordinate[1] 
関連する問題