Vision에서 Hand Pose Detection 손 추적



iOS14에서 손 포인트를 인식할 수 있습니다.
위의 그림은 Apple의 샘플 프로젝트입니다.
이 기사에서는 이미지에서 손 포인트를 취하는 절차를 소개합니다.

절차



요청을 실행하기 전까지는 항상 Vision과 동일합니다.

1.Vision을 가져오기.



import Vision

2. 요청을 만듭니다.



var handPoseRequest = VNDetectHumanHandPoseRequest()
handPoseRequest.maximumHandCount = 1 // 検出するての数

3.ImageRequestHandler에서 실행.



AVFoundation의 CaptureOutput 메서드 등으로 프레임의 PixelBuffer를 맞춥니다.
let handler = VNImageRequestHandler(cvPixelBuffer:pixelBuffer, orientation: .up, options: [:])
do {
    try handler.perform([handPoseRequest!])
    guard let observation = handPoseRequest?.results?.first as? VNHumanHandPoseObservation else { return }
    // maximumHandCountで設定した手の数だけObservationを取得できます。
} catch let error {
    print(error)
}

4.손가락의 각 포인트에의 액세스



예를 들어, 집게 손가락 끝의 포인트에 대한 액세스는 다음과 같습니다.
let indexFingerTip = try observation.recognizedPoints(.all)[.indexTip]
print(indexFingerTip)

Optional([0.984453; 0.562278])

포인트는 주어진 이미지의 방향 등에 따라 원점이 변화하므로 X축 Y축을 확인합시다.

획득할 수 있는 포인트 목록



5개의 손가락 각각의 앞의, 제1 관절, 제2 관절, 부근과, 손목의 21 포인트를 취득할 수 있습니다.


손가락

첫 번째 관절
두 번째 관절
뿌리


엄지손가락
.thumbTIP
.thumbIP
.thumbMP
.thumbCMC

집게 손가락
.indexTip
.indexDIP
.indexPIP
.indexMCP

가운데 손가락
.middleTip
.middleDIP
.middlePIP
.middleMCP

약지
.ringTip
.ringDIP
.ringPIP
.ringMCP

새끼손가락
.littleTip
.littleDIP
.littlePIP
.littleMCP


손목은 .wrist

🐣

프리랜서 엔지니어입니다.
일 상담 여기까지
로쿠키 시코쿠 @ g 마이 l. 이 m

Core ML을 사용하여 앱을 만들고 있습니다.
기계 학습 관련 정보를 발신하고 있습니다.

트위터
Medium

좋은 웹페이지 즐겨찾기