Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Ga
- 리눅스
- matplotlib
- 블로그
- 파이썬 시각화
- 티스토리
- python visualization
- 텐서플로
- Tistory
- Linux
- MySQL
- 시각화
- SQL
- 월간결산
- tensorflow
- 파이썬
- MATLAB
- 한빛미디어서평단
- Python
- 독후감
- 한빛미디어
- Blog
- 딥러닝
- 서평단
- Pandas
- Visualization
- 통계학
- Google Analytics
- 서평
- 매틀랩
Archives
- Today
- Total
pbj0812의 코딩 일기
[PYTHON] OpenCV로 민아누나 안경 씌우기 본문
0. 목표
- 신민아 누님께 안경 씌워 드리기
1. 준비물
1) 사진
2) OpenCV 설치
pip install opencv-python
2. 코드
1) library 호출
import cv2
2) 이미지 경로 입력
imgfile = '/Users/pbj0812/Desktop/jupyter_notebook/opencv/source/mina.jpg'
3) cascade.xml 호출
- 소스 위치(링크)
cascade_file = "/Users/pbj0812/Desktop/jupyter_notebook/opencv/opencv-master/data/haarcascades/haarcascade_eye.xml"
4) 이미지 / xml 읽기
image = cv2.imread(imgfile)
cascade = cv2.CascadeClassifier(cascade_file)
5) 눈 인식하기
eye_list = cascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=1, minSize=(150, 150))
- 함수 참고(링크)
6) 눈 표시하기
- eye in eye_list를 통해 눈 마다의 값을 받아서 계산
- 눈 사이의 선분을 추가하기 위해 각 위치 값을 list로 값을 저장한 뒤 for문 밖에서 계산
if len(eye_list) > 0:
x_list = []
y_list = []
w_list = []
h_list = []
color = (0, 0, 255)
for eye in eye_list:
x, y, w, h = eye
x_list.append(x)
y_list.append(y)
w_list.append(w)
h_list.append(h)
# 원 그리기
cv2.circle(image, (x+int(w/2), y+int(h/2)), 75, color, thickness = 8)
print('x : ', x)
print('y : ', y)
print('w : ', w)
print('h : ', h)
print('c1 : ', (x_list[0]+int(w_list[0]/2), y_list[0]+int(h_list[0]/2)))
print('c2 : ', (x_list[1]+int(w_list[1]/2), y_list[1]+int(h_list[1]/2)))
# 선분
cv2.line(image, (x_list[0]+int(w_list[0]/2), y_list[0]+int(h_list[0]/2)),
(x_list[1]+int(w_list[1]/2), y_list[1]+int(h_list[1]/2)), color, thickness = 4)
# 파일출력
cv2.imwrite("/Users/pbj0812/Desktop/jupyter_notebook/opencv/source/test2.jpeg", image)
else:
print("none")
* 안경 알고리즘
(1) x, y 값은 좌상단을 나타내며, w, h 는 각 변의 길이를 나타냄
(2) x와 y값에 w와 h의 절반 값 만을 더하면 눈의 중심 계산 가능
3. 결과
- 선분을 맞추기 위해 손으로 방정식을 풀었으나 미스 발생
4. 참고문헌
1) OpenCV
3) 참고 코드
4) OpenCV 원 그리기
'ComputerLanguage_Program > PYTHON' 카테고리의 다른 글
[PYTHON] OpenCV를 활용한 기생충 웹캠 어플리케이션 만들기 (0) | 2020.02.22 |
---|---|
[PYTHON] OpenCV를 활용한 나만의 기생충 포스터 만들기 (0) | 2020.02.15 |
[PYTHON] python을 사용한 Google Drive 에 파일 업로드 (0) | 2020.02.13 |
[PYTHON] flask + pymysql로 mysql 정보 호출 및 웹 표출 (4) | 2020.02.06 |
[Python] pymysql을 사용한 mysql 자료 추출 (0) | 2020.02.04 |
Comments