프로그래밍/Python

[Python] OpenCV 사람인식(라즈베리파이)

Beginner:) 2022. 11. 11.
320x100

테스트환경은 아래와 같다.

라즈베리파이3/4 (둘 다 테스트) buster

OpenCV 4.1.0

Keras 2.4.3


.일단 라즈베리파이이다보니 너무 느려서 사진 크기도 줄이고 흑백사진으로 디스플레이했다.

 

3은 답답할 정도로 느리다 ...

 

모델은 아래의 링크에 있다.

 

https://github.com/opencv/opencv/tree/master/data/haarcascades

 

사람을 인식하기 위해 fullbody를 사용했다.

 

아래는 소스코드

import cv2
import numpy as np
from matplotlib import pyplot as plt
from keras.models import load_model

body_cascade = cv2.CascadeClassifier('./models/haarcascade_fullbody.xml')

def tracking():
    cap=cv2.VideoCapture(0)
    cap.set(3,320)
    cap.set(4,240)

    while  True:
        ret, frame = cap.read()
        cv2.imshow('video',frame)
        
        gray_image = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        rgb_image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        
        body = body_cascade.detectMultiScale(gray_image, 1.01, 10)
        
        for (x,y,w,h) in body:
            cv2.rectangle(gray_image, (x,y), (x+w, y+h), (0,0,255),3)
        
        cv2.imshow('video',gray_image)    
        if cv2.waitKey(1) & 0xff == ord('q'):
            break
    cap.release()
tracking()
cv2.destroyAllwindosws()

 

결과물은 구글에 사람이라고 쳐서 카메라를 비췄다.

 

 

실제로 복잡한 환경에서 나를 비췄을 때 인식을 하기도하는데...

 

이상한 곳을 인식하기도 하고 인식을 못할때도 있고...

 

뭔가 결과물로 내놓기에는 아쉬웠다.

 

그러나 학교 프로젝트정도로는 사용해도 되겠다.

 

반응형

댓글