python: OpenCVで物体を検出

プログラミング
スポンサーリンク




こんにちは、おみです。

今回は、下記の動画ファイルから鳥を検出したいと思います。

↓使用する動画ファイル

 

↓動画をダウンロードしたサイト様

Attention Required! | Cloudflare
スポンサーリンク

ソースコード

import cv2
import math
import os
import numpy as np
import sys

# 動画のパスを指定
file_path = "Elster - 35908.mp4"

# 動画が存在するかを確認
if not os.path.exists(file_path):
    print("画像が存在しません。")

# 動画を読み込む
cap = cv2.VideoCapture(file_path)

# 動画の読み込みが成功したかを判定
if not cap.isOpened():
    print("動画ファイルの読み込みに失敗しました。")
    sys.exit()

# 消去する色をHSV形式で指定
l_green = (0, 0, 0)
h_green = (90, 255, 255)

# 動画を再生する
while True:
    # 1フレームずつ取得する
    ret, frame = cap.read()
    if not ret:
        break

    # フレームをHSV形式に変換
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # 2値化を行う
    nichi = cv2.inRange(hsv, l_green, h_green)
    nichi = cv2.bitwise_not(nichi)

    # 輪郭のみを検出する
    cons = cv2.findContours(nichi,
                            cv2.RETR_LIST,
                            cv2.CHAIN_APPROX_NONE)[0]

    # 輪郭を描画する
    for con in cons:
        # 面積が閾値を超えない場合、輪郭としない
        if cv2.contourArea(con) < 6000:
            continue

        # 描画処理
        cv2.polylines(frame, con, True, (255, 0, 0), 5)

    # 結果を出力
    cv2.imshow("Frame", frame)
    key = cv2.waitKey(30)
    if key == 27:
        break

実行すると、鳥を検出した動画が再生されます。

参考

動画ファイルを読み込み、再生する方法は以下の記事をご覧ください。

https://moimoiblog.com/explanation/python-explanation/python-video-play/

 

動画から物体を検出する方法は、以下の記事をご覧ください。

https://moimoiblog.com/english/python-opencv-detect-cont-hsv/

 

コメント

タイトルとURLをコピーしました