2017-06-13 15 views
-1

定義されていない私は、そのカメラのmicropythonで自分のコードを実行しています:OpenMV Cameraパイソン:自己がランダム

私はランダムに自己が定義されていないことをPythonでエラーが発生します。これは、私のPythonコードがどのように見えるかです:(ファイル全体が長すぎるだろう)

class BlobAnalyser: 
# 
#constructor and lots of functions 
#... 
# 
    def findLandmarkCombo(self, bnoAngle, playingTowardsBlue): 
     self.findBlobs() 
     print(type(self)) 
     self.possibleLandmarkIDs = [] 
     if len(self.blobs) == 0: 
      return None 
     for blobIndex in range(len(self.blobs)): 
      self.possibleLandmarkIDs.append([]) 
      #and so on and so on 

、私は2つの異なるエラーメッセージを持っている:

sometimes within self.findBlobs() or at "self.possibleLandmarkIDs = []"

AttributeError: ',' object has no attribute 'possibleLandmarkIDs'

は時々「」であります'int'または '(矢印記号)'です。おそらくコンピュータとカメラの間の通信が中断されたためです。

他のタイプのエラーはprint(type(self))にあります。「定義前にローカル変数selfが呼び出されました」がエラーメッセージです。このエラーは、関数の呼び出し中に発生したことはなく、関数内に常に存在します。

これらのエラーは完全にランダムに発生します。この方法は数百回と呼ばれ、突然動作しません。そして、このクラスのインスタンスは特定のスコープ内にないので(インタプリタを開いて>>> a = 0と入力したように作成されています)、ガベージコレクタによって削除されたとは思いません。

私はそれが何であるか考えているのか、それとも研究を続けることができたのでしょうか? ありがたいことは、あなたの答え、 desireentz

EDITを楽しみにして:私は、最初に、これは一般的だと思ったので(

def findBlobs(self): 
     img = sensor.snapshot() 
     #merge = True, 
     allBlobs = img.find_blobs(self.thresholds, pixels_threshold=200, area_threshold=150, merge=True) 
     self.blobs = [] 
     print("=====") 
     i = 0 
     for blob in allBlobs: 
      i += 1 
      img.draw_string(blob.cx() - 5, blob.cy() - 5, str(i)) 
      img.draw_rectangle(blob.rect()) 
      self.blobs.append(blob) 
      print(str(i) + ": " + str(bin(blob.code()))) 
     self.sortBlobs() 
+0

'__init __(self)'関数がありません。 –

+0

あなたは 'def findBlobs'も投稿できますか? – salparadise

+0

'__init __(self)'関数が存在します。 – desireentz

答えて

1

:ここ

私はfindBlobs(自己)機能を追加しましたマイクロ)pythonエラー、私はここでこのトピックを作成しました。その後、同じ質問をOpenMVカメラの公式フォーラムに掲載し、ファイル全体をアップロードしました。ファームウェアの開発者の一人は、このマイクロpythonの実装にはスタック保護がないと私に答えました。そして、スタックがいっぱいになったときにヒープを破損し、これらの「ランダム」エラーを生成する再帰関数を使用していました。