OpenCVを使うことで、いろいろな画像処理が簡単にプログラムできるということで、Raspberry Piを引っ張り出してきて試してみました。下の写真は、Youtubeにある渋谷交差点のライブ映像をリアルタイムで引っ張ってきて、動いている物体を抽出表示したものです。プログラムはhitomatagiさんのページを参考にさせていただきました。ありがとうございます。歩いている人々が移動物体として抽出されています。
こんな簡単なプログラムで出来るとは、恐るべしOpenCV。
import cv2
import numpy as np
import pafy
import imutils
# 定数定義
ESC_KEY = 27 # Escキー
INTERVAL= 33 # インターバル
FRAME_RATE = 30 # fps
WINDOW_ORG = "org"
WINDOW_BACK = "back"
WINDOW_DIFF = "diff"
# ウィンドウの準備
cv2.namedWindow(WINDOW_ORG)
cv2.namedWindow(WINDOW_BACK)
cv2.namedWindow(WINDOW_DIFF)
#url = "https://www.youtube.com/watch?v=mEx0DiQcOQw"
url = "https://www.youtube.com/watch?v=8QX0uwJpBW4"
best = ytube.getbest( preftype="mp4" )
mov_org = cv2.VideoCapture( best.url )
# 最初のフレーム読み込み
has_next, o_frame = mov_org.read()
i_frame = imutils.resize( o_frame, width=640 )
# 背景フレーム
back_frame = np.zeros_like(i_frame, np.float32)
# 変換処理ループ
while has_next == True:
# 入力画像を浮動小数点型に変換
f_frame = i_frame.astype(np.float32)
# 差分計算
diff_frame = cv2.absdiff(f_frame, back_frame)
# フレーム表示
# Escキーで終了
# 次のフレーム読み込み
# 終了処理