본문 바로가기

디지털포렌식(Digital forensic)/그림

[파일] full body detection code

반응형

OpenCV에서 제공되는 haarcascade_fullbody.xml 라이브러리와
Python을 사용해서 인체를 감지하는 코드를 테스트 용도로 만들었다.

 

haarcascade_fullbody.xml 라이브러리는 openCV의 git에서 download 받아야 한다.

정확하게 받지 않으면 error frame에 빠지게 되므로 주의해야 한다.

 

아래와 같이 받고자 하는 파일을 선택하고 download link의 raw file을 받아야 정상 동작한다.

 

파일을 받았다면
Python에서 실행하기 전에

OpenCV가 설치되어 있어야 한다(OpenCV의 설치방법은 다른 blog에서 ref.)

 

bodydetect.py
0.00MB

 

import cv2

cap = cv2.VideoCapture('sample4.mp4') 
font = cv2.FONT_HERSHEY_SIMPLEX 

cv2.namedWindow('Full Body Detection')

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

while True:
    ret, frame = cap.read()

    if not ret:
        break

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

    bodies = body_cascade.detectMultiScale(gray, 1.1, 4)

    for (x, y, w, h) in bodies:
        cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
        cv2.putText(frame, 'Motoway Detection', (x, y - 10), font, 0.9, (36, 255, 12), 2)

    cv2.imshow('Motoway Human Detection', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

 

 

들어오는 영상은 streaming으로 하지 않고 sample4라는 mp4파일로 지정했다.

아래에 sample1.mp4, sample2.mp4 파일을 첨부했다.
이 파일들을 사용하려면 코드에서 파일이름을 바꿔야만 한다.

 

실행 방법은 아래와 같다(파이썬 설치경로마다 다를 수 있지만 실행명령은 같다.).

 

C:\Python312> python bodydetect.py

 

 

 

위 영상과 같이 full body가 감지되면
지정된 컬러 박스와 사전 정의한 텍스트를 출력할 수 있다.
물론, 감지된 결과를 다른 시스템과 통신도 가능하다.

아래는 다른 샘플 파일로 테스트한 영상 결과다.

 

sample1.mp4
2.96MB
sample2.mp4
2.73MB

 

 

위 코드와 같이 테스트 할 수 있는 sample mp4 파일 2개를
같이 올린다. deep learning까지 이어지는 Try를 해보길. Good luck.

 

728x90