動画像処理
OpenCVとPythonを用いて以下の処理を実装します.
①動画読み込み・保存 ②DSA ③ラベリング処理(リアルタイム)←割愛


①動画読み込み・保存(inout.py)
import cv2
def main():
# Webカメラから入力
cap = cv2.VideoCapture(0) ←パス指定、ファイルなら" filename.mp4"
# MP4形式指定
fmt=cv2.VideoWriter_fourcc('m','p','4','v')
fps=30.0
size=(500,600)
out=cv2.VideoWriter('angio.m4v',fmt,fps,size)
while True:
# ret・・・True or False
ret, frame = cap.read()
if not ret:
break
# サイズに縮小
frame = cv2.resize(frame, size)
# ファイル保存
out.write(frame)
# 画像表示
cv2.imshow('Raw Frame', frame) k = cv2.waitKey(1)
if k == 27 or k==13 :break
# キャプチャをリリースしてウィンドウをすべて閉じる
out.release()
cap.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
main()
②DSA(DSA.py) ・・・ inout.pyと連動して使用して下さい.
import cv2
def main():
cap = cv2.VideoCapture("angio.m4v")
size=fmt=cv2.VideoWriter_fourcc('m','p','4','v')
fps=30.0
size=(500,600)
out=cv2.VideoWriter('DSA.m4v',fmt,fps,size,False)
ret, mask = cap.read()
# グレースケール変換
mask = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY)
mask = cv2.resize(mask, size)
while True:
# OpenCVでWebカメラの画像を取り込む
ret, frame = cap.read()
if not ret:
break
# スクリーンショットを撮りたい関係でサイズに縮小
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
frame = cv2.resize(frame, size)
# 画像表示
cv2.imshow('original', frame)
# サブトラクション処理
sub = frame - mask + 127
sub[sub<0]=0
sub[sub>255]=255
out.write(sub)
# フレームとマスクの差分画像を表示
cv2.imshow("DSA",sub)
k = cv2.waitKey(1)
if k == 27 or k==13 :break
# キャプチャをリリースしてウィンドウをすべて閉じる
out.release()
cap.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
main()