python 라즈베리파이 frame 영상 멈출려면 어떻게 하나요?

조회수 839회

마스크 인식 결과에따라 모터로 문을 열고 싶습니다.
frame 을 10번 정도 인식 후 mask > withoutMask 이면 마스크 인식을 잠시 멈추고 모터를 실행시킬려 합니다. 코드를 그대로 쓰면 모터 먼저 돌고 창이떠서 스레드를 사용하려합니다

  1. frame을 n번 인식 후 결과에 맞게 모터를 실행하고 싶습니다.
  2. 마스크를 썼을때만 모터를 돌려야합니다
  3. 모터가 도는 동안 마스크 인식을 멈추고 싶습니다
    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()

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)