Android, Retrofit2, 네이버 얼굴인식 API 만들기 1
지난번 retrofit2을 공부하게된 계기가 안드로이드 데이터 파싱을 하다보니
Retrofit이 AsyncTask 보다 훨씬 좋은 성능을 가지고 있어서 사용하게 되었습니다.
네이버 오픈 API 를 사용한 얼굴인식 앱을 만들어 보려 합니다.
네이버 개발자 센터에 있는 가이드를 조금 쉽게 풀어보겠습니다.
Clova Face Recognition API
Clova Face Recognition API(이하 CFR API)는 이미지 데이터를 입력받은 후 얼굴 인식 결과를 JSON 형태로 반환합니다. CFR API는 이미지에 있는 얼굴 인식하여 분석 정보를 제공하는 얼굴 감지 API와 닮은 연예인을 알려주는 유명인 얼굴 인식 API를 제공합니다. CFR API는 HTTP 기반의 REST API이며, 사용자 인증(로그인)이 필요하지 않은 비로그인 Open API입니다.
=> 이미지 데이터를 보내 얼굴 인식 결과를 JSON 형태로 받는다.
사전 준비사항
CFR API를 사용하려면 네이버 개발자 센터에 등록해야 합니다.< https://developers.naver.com >
=> 개발자 센터에 등록!
CFR API 사용하기
CFR API는 REST API이며, 얼굴 인식을 수행할 이미지 데이터를 HTTP 통신으로 음성 합성 서버에 전달하면 됩니다. 음성 합성 서버가 제공하는 REST API의 URI는 다음과 같으며 POST 방식으로 연결을 시도해야 합니다.
1 2 3 4 5 | // 유명인 얼굴 인식 API https://openapi.naver.com/v1/vision/celebrity // 얼굴 감지 API https://openapi.naver.com/v1/vision/face | cs |
HTTP 요청으로 얼굴 인식을 요청할 때 사전 준비사항에서 발급받은 Client ID와 Client Secret 정보를 헤더에 포함시켜야 합니다. 또한 요청을 multipart 형식으로 보내야 하며, 메시지의 이름은 image여야 합니다. 다음은 유명인 얼굴 인식 API를 호출할 때 보내는 HTTP 요청 메시지 예입니다.
=> HTTP 요청, Client ID와 Client Secret 정보를 헤더에 포함시켜야 한다.
=> multipart형식으로 보내고 이름은 image
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [HTTP Request Header] POST /v1/vision/celebrity HTTP/1.1 Host: openapi.naver.com Content-Type: multipart/form-data; boundary={boundary-text} X-Naver-Client-Id: {앱 등록 시 발급받은 Client ID} X-Naver-Client-Secret: {앱 등록 시 발급 받은 Client Secret} Content-Length: 96703 --{boundary-text} Content-Disposition: form-data; name="image"; filename="test.jpg" Content-Type: image/jpeg {image binary data} --{boundary-text}-- | cs |
HTTP 요청을 통해 보내는 이미지의 포맷에 대한 제약은 없습니다. 다만 GIF와 같은 이미지 포맷은 첫 번째 프레임의 이미지를 기준으로 얼굴 인식을 수행합니다.
Note!
서버로 전달할 수 있는 이미지의 크기는 최대 2MB입니다.
=> 이미지크기 2MB제한
위와 같은 HTTP 요청을 얼굴 인식 서버로 전달하면 얼굴 인식 서버는 JSON 형태의 분석 결과 데이터를 HTTP 응답 메시지로 반환합니다. 다음은 응답 예제입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | { "info": { "size": { "width": 900, "height": 675 }, "faceCount": 2 }, "faces": [{ "celebrity": { "value": "안도하루카", "confidence": 0.266675 } }, { "celebrity": { "value": "서효림", "confidence": 0.304959 } }] } | cs |
=> 응답예시는 이렇습니다.
실제 사용코드는 다음글에서 진행하겠습니다.
감사합니다.
'개발 > 안드로이드' 카테고리의 다른 글
[Android] 안드로이드 4대 구성 요소 (0) | 2017.11.20 |
---|---|
[Android] 안드로이드 이벤트리스너 onClickListener 구현 (0) | 2017.08.21 |
[Android] 안드로이드 레트로핏2 Retrofit2, 네이버 얼굴인식 API 만들기 2 (1) | 2017.08.03 |
[Android] 안드로이드 Retrofit2 (레트로핏2) (0) | 2017.08.01 |