2016-08-10 7 views
0

私はcv2.imshow演算子でビデオフィードを実行しています。ほとんどの時間、私は、コマンドラインでそれを呼び出すとき、コードが実行されますが、時折、私は次のようNameErrorを得る:それはcv2.imshowに呼び出される前に不規則なエラー - python cv2.imshow NameError:name "definition"が定義されていません

NameError: name 'masked' is not defined 

しかし、「マスクさは絶対に定義されています。

それはアレイPRもたらす、 print maskedcv2.imshowライン上に挿入され

image = frame.array 

miniframe = image 

M = np.float32([[1,0,x+w/2],[0,1,y+h/2]]) 
masked = cv2.warpAffine(image, M, (x+w, y+h)) 

cv2.imshow("frame", masked) 

image = frame.array 

miniframe = image 

masked = cv2.bitwise_and(image, image, mask=circle_img) 

cv2.imshow("frame", masked) 

同じことが「マスク」をこのように定義されている場合に発生します数値としてinted - コードが動作しているとき。動作していないときは、NameErrorトレースバックがprint maskedを指しています。

どちらのシナリオでも、NameErrorはコードを変更せずに一見無作為に発生します。ですから、私はそれを1回または20回実行することはできますが、突然コマンドラインでは機能しません。cv2.imshow行へのトレースバックがあります。場合によっては、以前のバージョンと同じコードブロックをコピーして貼り付けると、再び動作するようになることがありますが、いくつか修正を加えてから、NameErrorに戻ります。

Python NameError when var IS most definitely definedを読んで、cat -A filename.pyを使用して、見えない制御文字を確認しました。脱インデントと再インデントの後、2回以上動作した後、NameErrorに戻ります。

任意の助けもいただければ幸いです!

+1

トレースバックのかなりの量が欠落しています - 特に*発生した行。 –

+0

また、[バージョン管理下にある]ファイル(http://rogerdudler.github.io/git-guide/)もありますか?これは、ファイルに変更が加えられたかどうかを示します。 –

+0

偉大なgitのリンク!ありがとうございました。私は私の問題を解決し、解決策を投稿します! – Zeesy

答えて

0

解決策が見つかりました。私の問題は、満たされなかった「マスクされた」状態に関連していました。これは、顔の検出に依存するプログラムですが、私の問題は、満たされなければならない任意の進行中の状態に対して同じになります。

トラブルシューティング手順は次のとおりです。 - トレースバックの確認 - 開始時にカメラの前に顔を、開始時にカメラを手で持ってIRLをテストします。これは、顔が見つからない場合ではなく、顔が最初に検出された場合にプログラムが実行されることを確認しました。問題を解決するには

が、私はのように見えたコードで、その結果、cv2.imshow("frame", masked)のための条件を除いて試して/使用:

image = frame.array 

miniframe = image 

M = np.float32([[1,0,x+w/2],[0,1,y+h/2]]) 
masked = cv2.warpAffine(image, M, (x+w, y+h)) 

try: 
    cv2.imshow("frame", masked) 
except NameError: 
    cv2.imshow("frame", image) 

私はランク初心者です、これは本当に私にテストの価値を教え、トレースバックを見直します!

関連する問題