2017-12-16 4 views
-2

私はそれが動いている物体をスポットたら、オブジェクト検出アプリケーションを作っていますが、それは私が、メッセージが長いscreen.Iにとどまるようなものをやってみましたしたいscreen.Butにメッセージを置くこのOpenCVの画面上でテキストを長く保つ方法は?

while i < 10: 
    cv2.putText(current_frame, "MOVING", (100, 300), 
          cv2.FONT_HERSHEY_TRIPLEX, 4, (255, 0, 0)) 
    i += 1 

しかし、それは助けにはならず、テキストは1秒間しか表示されません。これをどのように達成できますか?

+1

その場合、同じフレームに複数回テキストを置くだけの場合は、検出ループ外にカウンター(0から始まる)とテキスト変数(「」で始まる)を置く必要があります。あなたが動きを検出するたびに、カウンターに10または20と言ってみましょう。 "動く"。 imshowの前にifを実行すると、カウンタが0より大きいかどうかがチェックされます。そうであれば、puttext関数を実行し、カウンタを1減らします。これはxフレームの量を表示します – api55

+0

@ api55計画! –

答えて

-1
## the variable that store detected obj's positions and counters 
locs = {} 

## the loop 
while True: 
    ret, frame = cap.read() 
    ## your detection processing 
    detectd, pos = detect(frame) 

    ## Assume tag the obj on 5 frames 
    if detectd: 
     locs[pos] = 5 

    for pos in locs: 
     cv2.putText(current_frame, str(pos), loc, cv2.FONT_HERSHEY_TRIPLEX, 4, (255, 0, 0)) 
    ## update the variable 
    locs = dict([(k,v-1) for (k,v) in locs.items() if v>0]) 
+0

構文が間違っていることを示しているので、コードの構文が正しいと確信していますか?私はOpenCVを使用しています3.MaybeあなたのコードはOpenCV 2で動作しますか? –

+0

3行を除いて何も指定しません。私はこのコードで私の考えを表現しますが、完全ではありません( 'detect'関数はあなた自身であります)。 – Silencer

+0

ああ、それは擬似コードです.okはそれで動作します! –

関連する問題