著作権フリーの白黒動画をカラー化 | python3Xのブログ

python3Xのブログ

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

元はカラーなのですが、それを敢えて白黒動画に変換し

Dahl氏の学習済みモデルOpenCVを使って作り上げたプログラムによって

白黒動画からカラーの動画を作成した1つの例です

Dahl氏の場合は、Decoder部分にUpSampling2Dを使っているようですが

これに対して私はConv2DTransposeを使いました

学習が進み、機会があったら

自分のモデルでも動画の自動着色を行おうと思っています

原理は同じなので上手くいくハズです

只今、著作権切れの白黒映画『ローマの休日(パート1)』を自動着色している最中です)

(著作権切れとはいえ一般公開はするつもりはありません)

(自分だけどこでも見れればそれでOKですから)

あと、下の動画ですが、もちろん著作権フリーです

どうぞご安心を!

※白黒動画をカラー化するソフトは存在します

しかし、なぜ敢えてそれに挑戦したかというと

いわゆる人工知能といわれるものが学習によって

白黒画面からカラーイメージを作り出す

そこに魅力を感じたからです

 

カラー化した動画

 

 

 

import tensorflow as tf
import numpy as np
import cv2
import argparse     # argparseをインポート
import time

start_time = time.time()
# nargs="?"にしてconstやdefaultのパラメータと組み合わせて指定した場合
# エラーになることなくスクリプトを実行できる

parser = argparse.ArgumentParser()        # パーサーを作る
parser.add_argument("movie1", type=argparse.FileType('r'))   # 入力する動画
parser.add_argument("movie2")                                     # 出力する動画
parser.add_argument("-m", const=1, nargs="?")   # 処理中画像を表示する際のオプション
parser.add_argument("-c", default=0, type=float, nargs="?")  # nargs="*"で可変長
args = parser.parse_args()                              # コマンドラインの引数を解析
movie1 = args.movie1
movie2 = args.movie2

cap = cv2.VideoCapture(movie1.name)    # 動画の読み込み

h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 入力動画のフレームの高さ
w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))  #  入力動画のフレームの幅
fps = cap.get(cv2.CAP_PROP_FPS)
allFrames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))  # 総フレーム数

print ("Width  =", w)
print ("Height =", h)
print ("FPS =", fps)
print ("Frames =", allFrames)

fourcc = "XVID"   # コーデック