- Today
- Total
Recent Posts
Recent Comments
Archives
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- selenium
- 대학시험
- 쉬운 파이썬
- 파이썬 입문
- Crawling
- 파이썬 강의
- 크롤링
- 파이썬 강좌
- 코딩문제
- 파이썬
- python data structure
- 채용문제
- 중간시험
- 자료구조
- 면접 파이썬
- 자료구조 강의
- 셀레니움
- 코딩시험
- python 중간고사
- 알고리즘
- 알고리즘 강좌
- 알고리즘 강의
- c언어
- gdrive
- 파이썬 자료구조
- 파이썬활용
- 파이썬3
- 기말시험
- 프로그래밍
- 파이썬 알고리즘
Notice
반원 블로그
9. Naver Developer api(2) - Clova Face Recognition, 얼굴 인식 API 본문
2018~/Python Skill Up
9. Naver Developer api(2) - Clova Face Recognition, 얼굴 인식 API
반원_SemiCircle 2019. 9. 6. 10:27개요
- 이미지 내의 얼굴을 분석하여 얼굴 수, 얼굴좌표(눈썹, 입꼬리 등), 추정한 감정, 추정한 나이 등의 데이터를 받아볼 수 있는 서비스
- 참고1 : CFR 얼굴인식 요약
같이 읽으면 좋은 글
제공되는 기본 예제
- 참고 링크
- client_id와 client_secret에서 이전 네이버 개발자 등록 에서 발급받은 정보를 넣는다.
- client_id와 client_secret은 내 애플리케이션 메뉴에서 확인
- 파일명에는 로컬PC의 이미지 경로 및 파일명을 적어준다.
- 가이드에서 주석 부분인 잘못되있으니 수정할 것
import os
import sys
import requests
client_id = "발급받은ID"
client_secret = "발급받은Secret"
url = "https://openapi.naver.com/v1/vision/face" # 얼굴감지
# url = "https://openapi.naver.com/v1/vision/celebrity" # 유명인 얼굴인식
files = {'image': open('파일명', 'rb')}
headers = {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret }
response = requests.post(url, files=files, headers=headers)
rescode = response.status_code
if(rescode==200):
print (response.text)
else:
print("Error Code:" + rescode)
응답 데이터 상세
- json 형태로 데이터가 구성되있다.
- 참고
활용 예시 1
- 여기서는 json모듈의 loads함수를 이용해 dict형으로 변환했습니다.
- json 모듈되신 응답데이터(response) 내장 메소드인 .json()도 사용가능합니다.
import os
import sys
import requests
import json
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
url = "https://openapi.naver.com/v1/vision/face" # 얼굴감지
# url = "https://openapi.naver.com/v1/vision/celebrity" # 유명인 얼굴인식
files = {'image': open('YOUR_FILE_NAME', 'rb')}
headers = {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret }
response = requests.post(url, files=files, headers=headers)
rescode = response.status_code
if(rescode==200):
# print (response.text)
data = json.loads(response.text)
faceCount = data['info']['faceCount']
print("감지된 얼굴 수는 {}입니다.".format(faceCount))
else:
print("Error Code:" + rescode)
활용 예시 2 + pillow패키지 crop 이용
- 응답데이터에 있는 얼굴 좌표 정보를 이용합니다.
- CFR로 받아오는 얼굴 좌표는 x,y,width, height입니다.
- pillow의 crop시 사용되는 좌표는 좌상단(x1,y1) , 우하단(x2,y2)입니다.
- 따라서 CFR에서 받은 얼굴 좌표를 crop시 필요한 좌표로 계산해야합니다.
- 아래 예제를 실행하기 전에 파이썬 파일과 같은 위치에 result 폴더를 만들어야 합니다.
import os
import sys
import requests
import json
from pprint import pprint
from PIL import Image
client\_id = "서비스ID"
client\_secret = "Secret키"
url = "[https://openapi.naver.com/v1/vision/face"](https://openapi.naver.com/v1/vision/face") # 얼굴감지
# url = "[https://openapi.naver.com/v1/vision/celebrity"](https://openapi.naver.com/v1/vision/celebrity") # 유명인 얼굴인식
file_name = './images/bts1.jpg'
files = {'image': open(file_name, 'rb')}
headers = {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret }
response = requests.post(url, files=files, headers=headers)
rescode = response.status_code
if(rescode==200):
# print (response.text)
data = json.loads(response.text)
pprint(data)
# faceCount = data['info']['faceCount']
# print("감지된 얼굴 수는 {}입니다.".format(faceCount))
#얼굴 좌표 수집하기 - ['faces'][인덱스]['roi'] -> {'height': 36, 'width': 36, 'x': 120, 'y': 91}
faces = data['faces']
#roi 좌표 별로 자르기
img = Image.open(file_name)
for index,face in enumerate(faces):
left = face['roi']['x']
top = face['roi']['y']
right = left + face['roi']['width']
bottom = top + face['roi']['height']
box = (left,top,right,bottom)
crop_img = img.crop(box)
crop_img.save('./results/{}.jpg'.format(index))
# The crop method from the Image module takes four coordinates as input.
# The right can also be represented as (left+width)
# and lower can be represented as (upper+height).
# (left, upper, right, lower) = (20, 20, 100, 100)
# Here the image "im" is cropped and assigned to new variable im_crop
# im_crop = im.crop((left, upper, right, lower))
else:
print("Error Code:{}".format(rescode))
'2018~ > Python Skill Up' 카테고리의 다른 글
파이썬 텔레그램 쓰기 - 2 예약 명령어 구조 만들기(파일 관리) (0) | 2019.09.22 |
---|---|
파이썬 텔레그램 쓰기 - 1. Bot 계정 생성 및 echo 예제 (0) | 2019.09.22 |
9. Naver Developer api(3) - Papago NMT API, 인공신경망 번역 (0) | 2019.09.06 |
9. Naver Developer api (1) - 개발자 계정 등록 (0) | 2019.09.06 |
8. pillow : 이미지 패키지(2) - ImageGrab 모듈과 Image 클래스 (0) | 2019.09.06 |
8. pillow : 이미지 패키지(1) - info, crop, thumbnail, resize (0) | 2019.09.06 |
7. pyisntaller - 파이썬 파일을 실행파일로 변환(py to exe) (0) | 2019.09.06 |
6. requests 모듈 - REST API 사용법, curl을 python requests로 변환방법 (0) | 2019.09.06 |
Comments