面白そうなのでご紹介させていただきます。
下記URLでOpenCVを使って動画をグレースケールに変換する内容の記事が載っていました。
URL:https://qiita.com/hitomatagi/items/ce00fab38d829965db3b
OpenCV3でOpenCV2の機能を使うためには以下の自作メソッドが必要のようです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
自作メソッド
codec.py
# cv2.cv.CV_FOURCC
def cv_fourcc(c1, c2, c3, c4):
return (ord(c1) & 255) + ((ord(c2) & 255) << 8) + \
((ord(c3) & 255) << 16) + ((ord(c4) & 255) << 24)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
プログラム
# -*- coding: utf-8 -*-
import cv2
import codec # 自作メソッドの読み込み
import cv2
import codec # 自作メソッドの読み込み
# 定数定義
ESC_KEY = 27 # Escキー
INTERVAL= 33 # 待ち時間
FRAME_RATE = 30 # fps
ORG_WINDOW_NAME = "org"
GRAY_WINDOW_NAME = "gray"
GRAY_WINDOW_NAME = "gray"
ORG_FILE_NAME = "peaple_walking.avi" # 元の動画名
GRAY_FILE_NAME = "gray_peaple_walking.avi" # 変換後のグレースケール動画名
GRAY_FILE_NAME = "gray_peaple_walking.avi" # 変換後のグレースケール動画名
# 元動画ファイル読み込み
org = cv2.VideoCapture(ORG_FILE_NAME)
org = cv2.VideoCapture(ORG_FILE_NAME)
# 保存動画ファイルの準備
end_flag, c_frame = org.read()
height, width, channels = c_frame.shape
rec = cv2.VideoWriter(GRAY_FILE_NAME, \
cv2.VideoWriter_fourcc(*'XVID'), \
FRAME_RATE, \
(width, height), \
False)
# ウィンドウの準備
cv2.namedWindow(ORG_WINDOW_NAME)
cv2.namedWindow(GRAY_WINDOW_NAME)
end_flag, c_frame = org.read()
height, width, channels = c_frame.shape
rec = cv2.VideoWriter(GRAY_FILE_NAME, \
cv2.VideoWriter_fourcc(*'XVID'), \
FRAME_RATE, \
(width, height), \
False)
# ウィンドウの準備
cv2.namedWindow(ORG_WINDOW_NAME)
cv2.namedWindow(GRAY_WINDOW_NAME)
# 変換処理ループ
while end_flag == True:
# グレースケール変換
g_frame = cv2.cvtColor(c_frame, cv2.COLOR_BGR2GRAY)
while end_flag == True:
# グレースケール変換
g_frame = cv2.cvtColor(c_frame, cv2.COLOR_BGR2GRAY)
# フレーム表示
cv2.imshow(ORG_WINDOW_NAME, c_frame)
cv2.imshow(GRAY_WINDOW_NAME, g_frame)
cv2.imshow(ORG_WINDOW_NAME, c_frame)
cv2.imshow(GRAY_WINDOW_NAME, g_frame)
# フレーム書き込み
rec.write(g_frame)
rec.write(g_frame)
# Escキーで終了
key = cv2.waitKey(INTERVAL)
if key == ESC_KEY:
break
key = cv2.waitKey(INTERVAL)
if key == ESC_KEY:
break
# 次のフレーム読み込み
end_flag, c_frame = org.read()
end_flag, c_frame = org.read()
# 終了処理
cv2.destroyAllWindows()
org.release()
rec.release()
cv2.destroyAllWindows()
org.release()
rec.release()