寄り道をしてしまいますが | python3Xのブログ

python3Xのブログ

ここでは40代、50代の方が日々の生活で役に立つ情報や私の趣味であるプログラム、Excelや科学に関する内容で投稿する予定です。

面白そうなのでご紹介させていただきます。

下記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 # 自作メソッドの読み込み

# 定数定義
ESC_KEY = 27     # Escキー
INTERVAL= 33     # 待ち時間
FRAME_RATE = 30 
# fps
ORG_WINDOW_NAME = "org"
GRAY_WINDOW_NAME = "gray"
ORG_FILE_NAME = "peaple_walking.avi"      # 元の動画名
GRAY_FILE_NAME = "gray_peaple_walking.avi"  # 変換後のグレースケール動画名
# 元動画ファイル読み込み
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)
# 変換処理ループ
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)
    # フレーム書き込み
    rec.write(g_frame)
    # Escキーで終了
    key = cv2.waitKey(INTERVAL)
    if key == ESC_KEY:
        break
    # 次のフレーム読み込み
    end_flag, c_frame = org.read()
# 終了処理
cv2.destroyAllWindows()
org.release()
rec.release()