キーボード入力、”1”、”2”を押したタイミングで、画像をそれぞれ異なる指定ファイル名で保存したい。
他のサイトを参考に、キーボード入力、”1”、”2”を押したタイミングで画像を保存する迄は出来たが、
下記コードの 8行目、10行目の不要なコード①、②を削除するとプログラムが動作しない。
<不具合>
①、②を削除すると、キーボード入力(”1”、または、”2”)しても、if、elif のどちらへも進みません。
※正常動作(①、②削除前)は、
キーボード入力”1”で、elif処理
キーボード入力”2”で、if処理
されます。
<達成したいこと>
①、②不要なコードを削除して、動作するようにしたい。
import numpy as np import cv2 c = cv2.VideoCapture(0) while True: img = cv2.imread('target0.jpg') **#不要なコード①** cv2.imshow('image', img) **#不要なコード②** r, img = c.read()#常時読み込み k = cv2.waitKey(0)&0xff if k == ord('2'):#キーボード”2”入力時 cv2.destroyAllWindows() def Judge_Matching(num):#テンプレートマッチング判定定義 if 0.9 < num: print("OK") cv2.rectangle(target, top_l, bottom_r, (0, 255, 0), 2) # 検出領域を四角で描画 else: print("NG") cv2.rectangle(target, top_l, bottom_r, (0, 0, 255), 2) # 検出領域を四角で描画 temp = cv2.imread('/home/pi/result/temp0.jpg') # テンプレート画像 cv2.imwrite('/home/pi/result/target0.jpg', img) target = cv2.imread('/home/pi/result/target0.jpg') # ターゲット画像 #サーチ範囲指定 s_top = 10 s_bottom = 460 s_left = 20 s_right = 600 target1 = target[s_top : s_bottom, s_left : s_right] cv2.imwrite('/home/pi/result/target1.jpg', target1) r = cv2.matchTemplate(target1, temp, cv2.TM_CCOEFF_NORMED) min_v, max_v, min_l, max_l = cv2.minMaxLoc(r) # 結果から検出領域の位置を取得 top_l = (max_l[0] + s_left, max_l[1] + s_top) # 左上の座標 bottom_r = (top_l[0] + temp.shape[1], top_l[1] + temp.shape[0]) Judg = Judge_Matching(max_v) print(max_v) cv2.rectangle(target, (s_left, s_top), (s_right, s_bottom), (255, 0, 0), 2)#サーチ範囲を四角で描画 cv2.imshow('Judge', target) cv2.imwrite('/home/pi/result/result.jpg',target) cv2.waitKey(1000) elif k == ord('1'):#キーボード”1”入力時 cv2.imwrite('/home/pi/result/test.jpg',img) cv2.destroyAllWindows() cv2.imwrite('/home/pi/result/temp_orign.jpg', img) img1 = img[134 : 233, 173 : 339] cv2.imwrite('/home/pi/result/temp0.jpg', img1) コード
回答1件
あなたの回答
tips
プレビュー