메뉴 건너뛰기

목록
2022.12.05 23:15

이제 정상작동됨

profile
조회 수 18 댓글 0 예스잼 1 노잼 0

No Attached Image

import cv2

import time

import serial

import serial.tools.list_ports

 

my_serial = serial.Serial("COM7", baudrate=9600, timeout = 1.0)

time.sleep(2.0)

def send_buzzer(freq):

    sendData = f"BUZZER={freq}\n"

    my_serial.write( sendData.encode() )

 

def main():

    cam = cv2.VideoCapture(0)

    cam.set(3,640)

    cam.set(4,480)

 

    face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

    eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')

 

    sleep_count = 0

    while( cam.isOpened() ):

        _, image = cam.read()

        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

 

        faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1,minNeighbors= 5,minSize=(50,50),

                                              flags=cv2.CASCADE_SCALE_IMAGE)

 

        if len(faces):

            for(x, y, w, h) in faces:

                cv2.rectangle(image,(x,y),(x+w,y+h),(255,0,0),2)

 

                face_gray = gray[y:y+h, x:x+w]

                face_color = image[y:y+h, x:x+w]

 

                eyes = eye_cascade.detectMultiScale(face_gray, scaleFactor=1.2,

                                                    minNeighbors=10)

 

                if len(eyes) == 0 :

                    if sleep_count < 1000:

                        sleep_count = sleep_count + 1

                    if sleep_count >= 1000:

                        print("BUZZ")

                        send_buzzer(1000)

                else:

                    if sleep_count >= 20:

                        sleep_count = sleep_count - 20

                    send_buzzer(0)

 

                for (ex, ey, ew, eh) in eyes:

                    cv2.rectangle(face_color, (ex,ey), (ex+ew,ey+eh), (0,255,0),2)

        print(sleep_count)

        cv2.imshow('result' , image)

 

        if cv2.waitKey(10) == ord('p'):

            break

 

    cv2.destroyAllWindows()

 

if __name__ == '__main__':

 

    ports = list(serial.tools.list_ports.comports())

    for p in ports:

        if 'Arduino Uno' in p.description:

            print(f"{p}포트에 연결하였습니다.")

            my_serial = serial.Serial(p.device, baudrate=9600, timeout=1.0)

            time.sleep(2.0)

 

    main()

 

    my_serial.close()

 

추가할만한 코드 : 자리를 비웠을때 카운트가 올라가게 해서 일정 시간(5분)이 경과하면 부저가 올리게 하기 

 

            


공지 수용소닷컴 이용약관 asuka 2020.05.16
  1. 정처기 시험준비

  2. 2024년도 컴퓨터활용능력 원서접...

  3. 2024년도 기사, 산업기사 시험 일...

  4. 소프트웨어 공학 ㄱㄱ

  5. 자료구조 그래프 1~2

  6. 무엇을 해야할까요

  7. 구글클라우드 돈나갔노

  8. 자료구조 절반 완료

  9. 자료구조 1일 1강씩 공부하기

  10. 한글 개좆같은옵션끄기

  11. How to use git and github

  12. 선형대수 공부를 위한 강의

  13. 자료구조와 알고리즘 with C++ 구입

  14. 11월은 기초

  15. 돈벌자잇

  16. 머신비전

  17. Rust가 미래다

  18. 영어공부 ... 계속 징행중

  19. 내일부터는 하루에 1시간정도는

  20. 내일은 시험을 보러 외출~

목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 56 Next
/ 56