1. OpenCV란 무엇인가?
: Open Source Computer Vision의 약자로 그래픽을 자유자재로 주무를 수 있는 라이브러리이다.
2. Python에서 OpenCV설치
: pip install opencv-python
(특정버전을 설치하려면 pip install python-opencv==버전번호)
3. 추가설치가 필요한 것들
- 시각화하기 위한 라이브러리 설치 : pip install matplotlib
- 이미지는 숫자의 집합으로 이루어져 있는데 이 형태를 주무르기 위한 틀을 제공하는 numpy 설치
: pip install numpy
4. 원하는 대상을 검출하기 위해 Haar알고리즘으로 미리 학습된 xml파일을 다운로드 받는다.
향후에 실력이 붙으면 자기가 원하는 것을 인식할 수 있는 Haar파일을 만들 수도 있지만
지금은 만들어져 있는 파일을 사용하도록 하겠다.
아래 링크에서 얼굴과 눈을 인식할 수 있는 파일만 다운로드 하겠다. (It's up to you~~)
- 링크 : https://github.com/opencv/opencv/tree/master/data/haarcascades
아래의 haarcascase_eye.xml 과 haarcascade_frontalface_default.xml 파일을 오른쪽 클릭 후 다른이름으로 링크 저장해서
하단의 예제소스와 같은 폴더상에 저장한다.
5. 이제 python 코드를 한번 짜볼까?
파일명은 아무렇게 지으면 되는데 본인은 detectFace.py 로 만들었다.
혹시 사람몸을 인식하고자 하면 위에서 body 관련된놈을 다운받아서 xml 파일 읽어들이는 부분만 변경하면 되겠지....
## -*- coding: utf-8 -*- # 한글 주석쓸려면 적기 import cv2 font = cv2.FONT_ITALIC def faceDetect(): eye_detect = False face_cascade = cv2.CascadeClassifier("./haarcascade_frontalface_default.xml") # 얼굴찾기 haar 파일 eye_cascade = cv2.CascadeClassifier("./haarcascade_eye.xml") # 눈찾기 haar 파일 try: cam = cv2.VideoCapture(0) except: print("camera loading error") return while True: ret, frame = cam.read() if not ret: break if eye_detect: info = "Eye Detention ON" else: info = "Eye Detection OFF" gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray,1.3, 5) faces = face_cascade.detectMultiScale(gray, 1.3, 5) #카메라 영상 왼쪽위에 위에 셋팅된 info 의 내용 출력 cv2.putText(frame, info, (5,15), font, 0.5, (255,0, 255),1) for(x,y, w,h) in faces: cv2.rectangle(frame, (x,y), (x+w, y+h), (255,0,0), 2) #사각형 범위 cv2.putText(frame, "Detected Face", (x-5, y-5), font, 0.5, (255,255,0),2) #얼굴찾았다는 메시지 if eye_detect: #눈찾기 roi_gray = gray[y:y+h, x:x+w] roi_color = frame[y:y+h, x:x+w] eyes = eye_cascade.detectMultiScale(roi_gray) for (ex,ey,ew,eh) in eyes: cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0,255,0), 2) cv2.imshow("frame", frame) k=cv2.waitKey(30) #실행 중 키보드 i 를 누르면 눈찾기를 on, off한다. if k == ord('i'): eye_detect = not eye_detect if k == 27: break cam.release() cv2.destroyAllWindows() faceDetect()
위 파일을 실행시키면 아래와 같이 나온다. (이상하게 나온 인물을 이해해주기 바랍니다.^^)
만족하셨나요? ~~~~~~~
'Programming Languages > Python' 카테고리의 다른 글
CentOS 7(Linux)에 Python3.7 설치하기 (6) | 2018.12.07 |
---|---|
python pandas 라이브러리를 이용한 엑셀(excel)파일 읽어들이기. (0) | 2018.07.10 |
Windows10 Python3.5 설치 (0) | 2018.04.19 |
[opencv] sift surf 를 사용하기 위한 추가설치 (0) | 2018.01.09 |