[iOS] Vision으로 손 모양 인식하기

VNDetectHumanHandPoseRequest 를 이용해보자

naljin
4 min readMar 24, 2021

WWDC 2020 에서 Detect Body and Hand Pose with Vision 이라는 흥미돋 세션을 봤따 (뒷북)

이제 손 모양 / 몸 모양 (?)도 인식할 수 있게 해줄게! ㅎㅎ 이런 느낌이었는데 발표 예제가 넘 신기했다

무려 이렇게 엄지랑 검지 모으고 글자를 쓸 수 있게 하는 것는데.. 간 지 나

VNDetectHumanHandPoseRequest

애플은 손을 인식하는 수단으로 21개 ((손가락 관절 3 + 손끝 1) * 5 + 손목 1)의 포인트를 제공한다.

이걸 각각 어떻게 얻느냐,,, 하면 우선 VNDetectHumanHandPoseRequest (손 모양을 감지할 수 있는 이미지 기반 vision request)로 요청을 보내면 된다.

그러면 results[VNHumanHandPoseObservation]? 형태의 손 배열이 쫘르륵 오는데, 여기서 handPoseRequest.results?.first 처럼 접근하는 것이 바로 하나의 손에 접근하는 것이다.

guard let hand = handPoseRequest.results?.first else {  return}// 엄지 손가락let thumbPoints: [VNHumanHandPoseObservation.JointName : VNRecognizedPoint] = try hand.recognizedPoints(.thumb)// 엄지손가락 중 포인트let thumbTipPoint: VNRecognizedPoint = thumbPoints[.thumbTip]

그리고 위의 코드처럼 각각의 손가락 및 손가락의 point에 접근할 수 있다.

이렇게 나온 VNRecognizedPoint 의 신뢰성(confidence)과 위치(location)를 잘 비벼서 로직을 작성하면 된다.

Detect Body and Hand Pose with Vision 세션에서 예제 코드를 다운 받을 수 있는데 돌려봤을때 넘 신기쓰였음…

Magic Finger Snap

저걸 보고 오른 손으로 핑거 스냅을 할 때 불이 나오면 웃길거 같았따

애플에서 제공하는 프로젝트를 응용해서

  1. 엄지, 검지를 모았다가
  2. 검지가 엄지보다 왼쪽으로 가면
  3. 불 나옴

이런 로직으로 변형해봤는데 역시나 웃겼다.

--

--