메뉴 건너뛰기

목록
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분)이 경과하면 부저가 올리게 하기 

 

            


List of Articles
번호 제목 글쓴이 날짜 조회 수 추천
공지 수용소닷컴 이용약관 file asuka 2020.05.16 1339 1
933 이진트리 1 그리드 2022.12.07 10 0
932 연결하는것도 그지같은거구나 3 file 그리드 2022.12.07 24 0
931 그리드 2022.12.06 13 2
» 이제 정상작동됨 그리드 2022.12.05 18 1
929 모델도 돋거해서 만들 수 있나 그리드 2022.12.05 11 0
928 내일까지 코드 올려놓겠음 그리드 2022.12.04 8 0
927 자료구조책 스택까지 클리어 ... 2 그리드 2022.12.04 23 0
926 내일은 아두이노로 작품을 제작할거임 file 그리드 2022.12.03 14 0
925 고등학생도 cv2나 keras 잘쓰네 그리드 2022.12.02 21 0
924 자료구조책 왔음 그리드 2022.12.02 6 0
923 과제와 보고서 제출이 14일정도 남은것에 대하여... 2 그리드 2022.11.30 19 0
922 전처리기 #과 ##에 대해 그리드 2022.11.29 7 0
921 시펄 1 그리드 2022.11.29 7 0
920 또 파이썬 공부 1 file 그리드 2022.11.28 25 0
919 소프트웨어 공학 책 그리드 2022.11.28 8 0
918 일요일까지는 딥러닝 논문보다가 2 그리드 2022.11.26 20 0
917 확인용 2 그리드 2022.11.23 24 0
916 그리드 2022.11.23 7 0
915 이더리움 일간 가격 데이터셋 만들기 그리드 2022.11.23 7 0
914 항공지도 이미지 처리방법의 예상순서 그리드 2022.11.23 13 0
목록
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 56 Next
/ 56