face_detection.py

# この作品はMITライセンスの下で提供されています。
# Copyright (c) 2013-2023 OpenMV LLC. 全著作権所有。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 顔検出の例
#
# この例では、OpenMV Camの内蔵顔検出機能を示します。
#
# 顔検出は、画像に対してHaar Cascade特徴検出器を使うことで動作します。
# Haar Cascadeは、一連のシンプルな領域コントラストチェックです。内蔵の
# frontalface検出器には25段階のチェックがあり、各段階には
# 数百のチェックがあります。Haar Cascadeが高速なのは、前の段階を通過した場合のみ
# 後の段階が評価されるためです。さらに、OpenMV Camは積分画像と呼ばれる
# データ構造を使って、各領域コントラストチェックを一定時間で
# 高速に実行します(特徴検出がグレースケールのみである理由は、
# 積分画像に必要なメモリ容量のためです)。

import csi
import time
import image

csi0 = csi.CSI()
csi0.reset()
csi0.contrast(3)
csi0.gainceiling(16)
csi0.framesize(csi.HQVGA)  # 顔追跡にはHQVGAとGRAYSCALEが最適です。
csi0.pixformat(csi.GRAYSCALE)

# Haar カスケードを読み込む
# デフォルトでは全ステージを使用します。ステージ数を減らすと高速になりますが精度は低下します。
face_cascade = image.HaarCascade("/rom/haarcascade_frontalface.cascade", stages=25)
print(face_cascade)

# FPSクロック
clock = time.clock()

while True:
    clock.tick()

    # スナップショットを取得します
    img = csi0.snapshot()

    # オブジェクトを検出します。
    # 注意: scale係数を小さくすると画像がより縮小され、より小さい物体を検出できます。
    # しきい値を高くすると検出率は上がりますが、誤検出も増えます。
    objects = img.find_features(face_cascade, threshold=0.75, scale=1.25)

    # オブジェクトを描画
    for r in objects:
        img.draw_rectangle(r)

    # FPSを表示します。
    # 注意: 実際のFPSはもっと高く、FBをストリーミングすることで遅くなっています。
    print(clock.fps())

results matching ""

    No results matching ""