(前回の続きです)
今度はカメラ画像の処理と動画の処理のサンプルを作成しました。
開発と動画確認の環境は「深層学習 Windwos10 に TensorFlow Object Detection API をインストール」
「Ubuntu 20.04 に TensorFlow Object Detection API をインストール」と同じです。
(このプログラムのオブジェクト検出部分の処理は TensorFlow 2 Object Detection API tutorial の Example を参考にして作成されています)
(練習のためのサンプルプログラムです。詳細の動作確認は行っていません。)
(1)概要
①カメラ画像から検出するサンプルプログラム
PCに接続したカメラの画像から、特定の動物を検出して動画として保存する。
②動画から検出するサンプルプログラム
選択された動画ファイルから、特定の動物を検出して動画として保存する。
(2)プログラム
Pythonプログラム(テキストファイル UTF-8)
①カメラ画像から検出するサンプルプログラム
camerasample.py
②動画から検出するサンプルプログラム
moviesample.py
(3)解説
①カメラ画像から検出するサンプルプログラム
カメラ処理はOpenCVの機能を使っています。
パラメータはとりあえず0にしています。
camerasample.py
def openCamera() :
・・・
src = cv2.VideoCapture(0)
・・・
対象の動物は mscoco_label_map.pbtxt の中から選択して定義しています。
# 選択対象となるクラス
# mscoco_label_map.pbtxtから動物を選択する
TARGET_CLASSES = {
16: “bird” , # 鳥
17: “cat” , # 猫
18: “dog” , # 犬
19: “horse” , # 馬
20: “sheep” , # 羊
21: “cow” , # 牛
22: “elephant”, # 象
23: “bear” , # 熊
24: “zebra” , # 縞馬
25: “giraffe” # 麒麟
}
ビデオパラメータは環境や目的に合わせてい変更してください。
動画の速さは適当に 1 FPS としてあります。
保存する動画のコーディックの候補は以下の通りです。
# 動画書き込み用のコーディック (動作環境に依存します)
CODEC = [[*’MJPG’], ‘avi’]
#CODEC = [[*’DIV3′], ‘avi’]
#CODEC = [[*’MP4V’], ‘mp4′]
#CODEC = [[*’mp4v’], ‘mov’]
# 動画の速さ fps
FPS = 1
データとモデルのディレクトリはデフォルトの’data’としています。
BASE_DIR = ‘data’
DATA_DIR = os.path.join(os.getcwd(), BASE_DIR)
②動画から検出するサンプルプログラム
基本的にはカメラと同じで OpenCV の機能を利用しています。
カメラ処理の代わりに動画ファイルの選択画面が開きます。
moviesample.py
def selectVideo(defaultDir = “./”) :
・・・
# 動画ファイル選択
filepath = filedialog.askopenfilename(title=”元動画ファイル選択”, filetypes=MOVIE_FILETYPE, initialdir=defaultDir)
print(filepath)
if len(filepath) == 0 :
print(‘Canceled.’)
return video, filepath
・・・
video = cv2.VideoCapture(filepath)
・・・
(3)動作確認
①カメラ画像から検出するサンプルプログラム
とりあえず手元にあった鳥類図鑑で試してしました。
②動画から検出するサンプルプログラム
動画から鳥を検出してみました。
(2024/07/27 Shin Onda)