python、OpenCV初心者です。生成した画面に、cv2.putTextで置いた文字をif文で書き換えたいのですが、うまくできません。
やりたいことは、初期値で"FIRST"が表示され、
キーボードのaを押したら、"A"、キーボードのbを押したら、"B"、と表示することで表示はできるのですが、前のが消されずに残ってしまいます。
生成した画面は同じまま、文字の描画を前のものは消し、今のものだけ表示するにはどうしたらいいのでしょうか?
python2.7.13
1# -*- coding: utf-8 -*- 2#!/usr/bin/python 3import time 4import sys 5import cv2 6 7cap = cv2.VideoCapture(0) 8 9# フレームをキャプチャする 10ret, frame = cap.read() 11ret=cap.set(3,240) 12ret=cap.set(4,180) 13 14height=frame.shape[0] 15width=frame.shape[1] 16font01=cv2.FONT_HERSHEY_SIMPLEX 17 18text01 = 'FIRST' 19CV_AA = 16 20cv2.putText(frame,text01,(10,100),font01,2,(0,255,255),4) 21 22while(True): 23 24 # 画面に表示する 25 cv2.imshow('frame',frame) 26 27 # キーボード入力待ち 28 key = cv2.waitKey(1) & 0xFF 29 30 # aを押した時 31 if key == ord('a'): 32 print("aを押した") 33 text01='A' 34 cv2.putText(frame,text01,(10,100),font01,2,(0,255,255),4) 35 # bを押した時 36 elif key == ord('b'): 37 print("bを押した") 38 text01='B' 39 cv2.putText(frame,text01,(10,100),font01,2,(0,255,255),4) 40 41 # qが押された場合は終了する 42 if key == ord('q'): 43 print("quit") 44 GPIO.cleanup() 45 sys.exit(0) 46 break 47 48 print(text01) 49 50# ウィンドウをすべて消す 51cv2.destroyAllWindows() 52 53
tiitoiさんのアドバイスから、下記のように修正しました。
tiitoiさんありがとうございます。
なんとか切り替わるようになりました!
しかし、今度は文字がチカチカしてしまい、これもどうしたらいいのか、、と思いました。
python
1# -*- coding: utf-8 -*- 2#!/usr/bin/python 3 4import numpy as np 5import cv2 6 7cap = cv2.VideoCapture(0) 8 9curr_key = "None" 10 11# フレームをキャプチャする 12ret, frame = cap.read() 13ret=cap.set(3,240) 14ret=cap.set(4,180) 15 16height=frame.shape[0] 17width=frame.shape[1] 18font01=cv2.FONT_HERSHEY_SIMPLEX 19 20#text01 = 'FIRST' 21#CV_AA = 16 22#cv2.putText(frame,curr_key,(10,100),font01,2,(0,255,255),4) 23 24 25while True: 26 frame_copy = frame.copy() 27 28 # 画面に表示する 29 cv2.imshow('frame',frame) 30 31 # キーボード入力待ち 32 key = cv2.waitKey(1) & 0xFF 33 34 # 一番最後にキー入力された文字を表示する。 35 if curr_key: 36 cv2.putText(frame_copy,curr_key,(10, 100), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,255,255), 4) 37 38 cv2.imshow('frame',frame_copy) 39 key = cv2.waitKey(1) & 0xFF 40 41 if key == ord('a'): 42 curr_key = 'A' 43 print("Aを入力") 44 elif key == ord('b'): 45 curr_key = 'B' 46 print("Bを入力") 47 elif key == ord('q'): 48 break 49 50 51# ウィンドウをすべて消す 52cv2.destroyAllWindows() 53

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/14 09:43
2019/04/14 09:56
2019/04/14 10:07
2019/04/14 12:42