OpenCVによる人の検出 | python3Xのブログ

python3Xのブログ

ここでは40代、50代の方が日々の生活で役に立つ情報や私の趣味であるプログラム、Excelや科学に関する内容で投稿する予定です。

今回もOpenCVを取り上げます。

これを使って、人の検出を行いたいと思います。

もちろん画像は著作権フリーの素材を加工したものを用いました。

人検出プログラムは下記URLを元に行っています。

この結果からまだ完全に人物だけを認識している訳ではないことが分かります。

標識や人物の腕のみの画像にも反応しています。

 

※元画像はサイズが大きすぎるようでアップロード出来ませんでした。

URL:https://algorithm.joho.info/programming/python/opencv-hog-cascade-human-detection-py/

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

# -*- coding: utf-8 -*-
import cv2

def main():
    # 入力画像の読み込み
    img = cv2.imread("hokosha.png")
    # グレースケール変換
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # HoG特徴量 + SVMで人の識別器を作成
    hog = cv2.HOGDescriptor()
    hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
    hogParams = {'winStride': (8, 8), 'padding': (32, 32), 'scale': 1.05}
    # 作成した識別器で人を検出
    human, r = hog.detectMultiScale(gray, **hogParams)
    # 人の領域を赤色の矩形で囲む
    for (x, y, w, h) in human:
        cv2.rectangle(img, (x, y), (x + w, y+h), (0,0,200), 3)
    # 結果を出力
    cv2.imwrite("hokosha.jpg",img)

if __name__ == '__main__':
    main()