【iOS】ARKitを使って人物を検出してみた
以前にサイダーを検出するアプリを作ったことがありますが、このアプリで使っているARKitという技術を使うと、簡単に人物を検出することができます。ということで、検出してみました。
仕上がり
こんな感じでうまく検出できました。
作り方
1.XCodeから、プロジェクトの作成で、Augmented Reality Appを選択します。
2.storyboardを開いて、もともと配置されていたARViewを削除し、Scene Viewを追加します。画面の上下左右に張り付くように設定しましょう。
また、Scene ViewをView Controllerに紐付けます。
3.コード全文は次のとおりです。説明をいれています。
import UIKit
import ARKit
class ViewController: UIViewController, ARSCNViewDelegate {
@IBOutlet var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
initARKit()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
startARKit()
}
fileprivate func initARKit() {
sceneView.delegate = self // この設定により人物を検出したときにrendererが呼ばれる
}
fileprivate func startARKit() {
let configuration = ARBodyTrackingConfiguration() // 人物の動きをトラッキングする設定
sceneView.session.run(configuration) // セッションの開始
}
// 人物を検出すると呼ばれる
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
if anchor is ARBodyAnchor { // 人物だった場合
// 以下のコードで人物の位置に水色の円を追加している
let geometory = SCNSphere(radius: 1)
geometory.firstMaterial?.diffuse.contents = UIColor.init(red: 175/255, green: 255/255, blue: 255/255, alpha: 200/255)
let sphere = SCNNode(geometry: geometory)
node.addChildNode(sphere)
}
}
}
今回は人物の検出にとどめていますが、「BodyTracking」という名前の通り、人の体の動きを検出できます。
Githubのリポジトリはこちらです。
<参考文献>
この記事が気に入ったらサポートをしてみませんか?