OpenCV(Open Source Computer Vision)

인텔에서 만든 강력한 영상처리 라이브러리

- 실시간 이미지 프로세싱에 중점을 둔 라이브러리

- OpenCV-python : OpenCV의 파이썬 API를 모아둔 것

 

 

 

 

- 아나콘다를 사용하시는 분들은 프롬프트를 열어서 다음 명령어로 설치하시길 바랍니다.

pip install tensorflow
conda update wrapt

pip install keras

pip install opencv-python

 

 

 

- OpenCV를 이용한 간단한 얼굴 인식

import cv2
import sys

 

# 불러올 경로 결정
image_file = "./image/red.jpg"
cascade_file = "C:/Anaconda3/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml" # 정면 얼굴인식
cascade_file2 = "C:/Anaconda3/Lib/site-packages/cv2/data/haarcascade_lefteye_2splits.xml"


image = cv2.imread(image_file)
image_gs = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cascade = cv2.CascadeClassifier(cascade_file)
face_list = cascade.detectMultiScale(image_gs,scaleFactor = 1.1,minNeighbors=3, minSize=(70,70))

cascade2 = cv2.CascadeClassifier(cascade_file2)
eye_list = cascade2.detectMultiScale(image_gs,scaleFactor = 1.1, minNeighbors=1,minSize=(10,10))

if len(face_list) > 0:
    print(face_list)
    color = [(0,0,255),(0,255,0)]
    for face in face_list:
        x,y,w,h = face
        cv2.rectangle(image, (x,y), (x+w, y+h), color[0], thickness=8)
        # 이미지, 가로,세로 시작 위치, 끝나는 위치, 컬러, 선의 굵기
    if len(eye_list) > 0:
        print(eye_list)
        for eye in eye_list:
            x,y,w,h = eye
            cv2.rectangle(image, (x,y), (x+w, y+h), color[1], thickness=8)
    cv2.imwrite("facedetect-output.PNG", image)

else:
    print("no face")

- 아나콘다에서 openCV가 정상적으로 설치되었을 경우 위와 같은 파일경로에 파일이 있는 것을 확인할 수 있습니다.

- 이미지를 사용자에 따라 저장한 위치에서 불러오고 cascade를 통해 어떤 것을 분류할 것인지 결정합니다.

- minNeighbors :  각 후보 사각형을 유지해야하는 이웃 수를 지정

- minsize : 가능한 최소 객체 크기

 

- facedetect-output.PNG

- 저는 레드벨벳 얼굴로 테스트를 해보았고 완전히 찾아내지는 못했지만 어느정도 인식하는 것으로 확인 할 수 있었습니다.

 

 

 

# 각각 xml 설명

[정면 얼굴 검출]
arcascade_frontalface_default.xml
haarcascade_frontalface_alt.xml
haarcascade_frontalface_alt2.xml
haarcascade_frontalface_alt_tree.xml


[측면 얼굴 검출]
haarcascade_profileface.xml


[웃음 검출]
haarcascade_smile.xml


[눈 검출]
haarcascade_eye.xml
haarcascade_eye_tree_eyeglasses.xml
haarcascade_lefteye_2splits.xml
haarcascade_righteye_2splits.xml


[고양이 얼굴 검출]
haarcascade_frontalcatface.xml
haarcascade_frontalcatface_extended.xml


[사람의 전신 검출]
haarcascade_fullbody.xml


[사람의 상반신 검출]
haarcascade_upperbody.xml


[사람의 하반신 검출]
haarcascade_lowerbody.xml


[러시아 자동차 번호판 검출]
haarcascade_russian_plate_number.xml
haarcascade_licence_plate_rus_16stages.xml

 

+ Recent posts