#画面に動きがあった部分を検出する
以下のコードの
Python
1#今回のフレームを保存 2 img_last = img_b
は,なぜ必要なのですか?
全コードは以下に示しています.
Python
1###画面に動きがあった部分を検出しよう### 2import cv2 3 4cap = cv2.VideoCapture(0) 5img_last = None#前回の画像を記憶する変数 初期化している 6green = (0,255,0) 7 8while True: 9 #画像を取得 10 ret,frame = cap.read() 11 frame = cv2.resize(frame,(500,300)) 12 13 #白黒画像に変換 14 gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) 15 gray = cv2.GaussianBlur(gray,(9,9),0)#画像のぼかし処理 16 img_b = cv2.threshold(gray,100,255,cv2.THRESH_BINARY)[1]#画像を二値化している 17 18 #差分を確認する 19 if img_last is None:#もし,img_lastがない時, 20 img_last = img_b#img_last=img_bとする 21 continue 22 frame_diff = cv2.absdiff(img_last,img_b) 23 cnts = cv2.findContours(frame_diff,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[1] 24 25 #差分があった点を画面に描く 26 for pt in cnts: 27 x,y,w,h = cv2.boundingRect(pt) 28 if w < 30:continue#小さな変更点は無視する 29 cv2.rectangle(frame,(x,y),(x+w,y+h),green,2) 30 31 32 #今回のフレームを保存 33 img_last = img_b 34 35 36 #画面に表示 37 cv2.imshow("Diff Camera",frame) 38 cv2.imshow("diff data",frame_diff) 39 if cv2.waitKey(1) == 13:break 40 41cap.release() 42cv2.destroyAllWindows()
大雑把な質問になってしまい申し訳ないのですが,ご回答のほどお願い致します.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。