마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

open cv를 이용해서 얼굴의 길이를 파악하고 싶습니다.

0 추천
제가 지금 하고 있는 프로젝트는 얼굴을 인식을 하면 얼굴의 길이에 따라서

모터를 구동해서 얼굴 길이와 형태에 맞게 가면을 움직이는 것 입니다.

얼굴 형태 출력는 open cv와 dlib를 이용하면 되는데 길이측정을 하는 법을 모르겠습니다.  

open cv와 dlib를 이용해서 얼굴의 길이를 측정하는 방법을 알 수 있을까요?

다른 방법이 있으시면 알려주시면 감사하겠습니다.
익명사용자 님이 2018년 9월 10일 질문

2개의 답변

0 추천
미리 길이를 알고 있는 특정 물건(카드, 명함, 담뱃갑)과 같이 카메라에 노출 된다면

그 특정 물건의 길이로 부터 얼굴의 길이 비율을 계산하여 알아내는 방법이 가장 간단합니다.

지도의 축척과 같은 개념입니다.

 

단순히 카메라와 카메라에 노출된 사람으로는 알 수 없습니다.

폰마다 카메라 모듈도 다르고 그래서 같은 위치에 찍어도

크기도 다르고, 각도, 원근에 따라 달라집니다.

카메라의 포커스 값으로 부터 물체까지의 거리를 알려고 해도

카메라의 스펙에 따라 다 달라집니다.

오차도 많이 발생합니다.

 

google의 measure 란 앱이 관련 기능을 구현한 앱인데요. 써보시면 아시겠지만 구글에서 만든 앱조차 오차가 많이 발생합니다.

https://play.google.com/store/apps/details?id=com.google.tango.measure
원조안드로이드 (58,190 포인트) 님이 2018년 9월 10일 답변
0 추천
비교할 수 있는 물체가 얼굴 근처에 있어야 합니다.

그런게 없으면 얼굴 큰 사람이 멀리 있는 것과 작은 사람이 좀 더 가까이 있어서 같은 사이즈로 보이는 것을 구분할 수 없죠.

보통 다른 물체는 옆에 신용카드로 하는데 얼굴에 그러기는 힘들겠죠.

dlib를 쓰니까 60개 정도의 Facial Landmarks가 나오니

얼굴의 방향을 어느 정도 찾을 수 있습니다.

그렇게되면, 정면으로 찍지 않아도 오차는 줄일 수 있습니다.

비교 물체가 사각형 형태면 더 좋을 듯 싶네요~ (얼굴방향에 대한 검증이 가능)

또 한가지 dlib가 98메가 정도 되어서 플레이스토어 등록할 때 문제가 됩니다.

앱 설치후 첫 실행시 다운로드 받게 구성하세요~
Will Kim (43,170 포인트) 님이 2018년 9월 11일 답변
Will Kim님이 2018년 9월 12일 수정
...