python 라즈베리파이 frame 영상 멈출려면 어떻게 하나요?
조회수 839회
마스크 인식 결과에따라 모터로 문을 열고 싶습니다.
frame 을 10번 정도 인식 후 mask > withoutMask 이면 마스크 인식을 잠시 멈추고 모터를 실행시킬려 합니다. 코드를 그대로 쓰면 모터 먼저 돌고 창이떠서 스레드를 사용하려합니다
- frame을 n번 인식 후 결과에 맞게 모터를 실행하고 싶습니다.
- 마스크를 썼을때만 모터를 돌려야합니다
- 모터가 도는 동안 마스크 인식을 멈추고 싶습니다
import threading
import time
def motoring():
setServoPos(90)
time.sleep(5.0)
setServoPos(0)
time.sleep(5.0)
servo.stop()
def masking() :
while True :
frame = vs.read()
frame = imutils.resize(frame, width=500)
(locs, preds) = detect_and_predict_mask(frame, faceNet, maskNet)
for (box, pred) in zip(locs, preds):
(startX, startY, endX, endY) = box
(mask, withoutMask) = pred
if mask > withoutMask:
label = "Thank You. Mask On."
color = (0, 255, 0)
else :
label = "No Face Mask Detected"
color = (0, 0, 255)
label = "{}: {:.2f}%".format(label, max(mask, withoutMask) * 100)
cv2.putText(frame, label, (startX-50, startY - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, color, 2)
cv2.rectangle(frame, (startX, startY), (endX, endY), color, 2)
cv2.imshow("Face Mask Detector", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break
if __name__ =="__main__":
thread1 = threading.Thread(target=masking)
thread2 = threading.Thread(target=motoring)
thread1.daemon = True
thread2.daemon = True
thread1.start()
thread2.start()
thread1.join()
thread2.join()
댓글 입력