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
'머신러닝 in Python' 카테고리의 다른 글
[Python] 비지도 학습 - 군집분석 (0) | 2019.09.04 |
---|---|
[Python] PCA(주성분 분석) (0) | 2019.09.03 |
[Python] Cross-validation + Grid Search (1) | 2019.08.30 |
[Python] Grid Search (0) | 2019.08.30 |
[Python] Cross-validation(교차검증) (1) | 2019.08.30 |