カラー化の自動化ですが
ただ単に色んなプログラムを引っ付けただけのものです
結果はまだ分かりません
失敗で笑えるかも知れません
元のコードを実行したのですが
動画の順番が滅茶苦茶になり
目が点になりました
取り敢えず私なりに書き換えます
あと、API_KEYはご自身でアカウントの登録を行い
それに従って変更してください
これで上手くいかなくてもAviUtilで音声と動画を同期できるとは思いますが
出来れば、より簡単にプログラムを実行したいですよね⁉
今回も言い訳じみていますが、プログラマーでもない
ただの読売新聞東陽町駅前に勤める
得体の知れない者(自爆)が作った自動着色プログラムです
どうか、ご容赦ください!
m(__)m
途中経過です
コード
# coding: utf-8
from pathlib import Path
from PIL import Image, ImageSequence
import cv2
import glob
import requests
# モノクロmp4へのパス
IMAGE_MONO_PATH = 'rome3.mp4'
# 生成されるカラーmp4へのパス
IMAGE_COLOR_PATH = 'rome01.mp4'
outname = 'rome'
# 分割したモノクロ画像生成フォルダ
DESTINATION_MONO = 'splitted_mono'
# 分割したカラー画像生成フォルダ
DESTINATION_COLOR = 'splitted_color'
captureimg = cv2.VideoCapture(IMAGE_MONO_PATH)
fps = captureimg.get(cv2.CAP_PROP_FPS) # 元動画のフレームレート(音と同期させる時に必須)
DURATION = round(1000/fps)
cnt = 0
while True:
ret, frame = captureimg.read()
if ret == True:
# splitted_monoフォルダーの中に指定した名前を先頭に,
# 5桁のフレーム番号を入れて,PNG形式で保存
cv2.imwrite('./splitted_mono/'+outname+'_'+str("{0:05d}".format(cnt)) +'.png', frame)
cnt += 1
else:
break
def get_color(mono_destination, color_destination):
dir_dest = Path(color_destination)
if not dir_dest.is_dir():
dir_dest.mkdir(0o700)
print('Destionation directory is created: "{}".'.format(color_destination))
files = sorted(glob.glob(mono_destination + '/*.png'))
cnt1 = 0
for i, file in enumerate(files):
r = requests.post(
"https://api.deepai.org/api/colorizer",
files={
'image': open(file, 'rb'),
},
headers={'api-key': '5226b592-9551-4b29-a0ad-9a675531df0a'}
)
url = r.json()['output_url']
file_name = color_destination + '/' + outname +str("{0:05d}".format(i)) + ".png"
response = requests.get(url)
image = response.content
with open(file_name, "wb") as f:
f.write(image)
cnt1 += 1
def main():
get_color(DESTINATION_MONO, DESTINATION_COLOR)
join_images(DESTINATION_COLOR, IMAGE_COLOR_PATH, DURATION)
def join_images(color_destination, color_filename, duration):
jpg_files = sorted(glob.glob(color_destination + '/*.png'))
fourcc = cv2.VideoWriter_fourcc('m','p','4', 'v') # 取り敢えずmp4コンテナならOKか?
# 幅 w と高さ h が異なるとエラーになるので注意
video = cv2.VideoWriter('rome01.mp4', fourcc, fps, (1280, 720)) # w と h の指定が向こう任せ
for jpg_file in jpg_files:
img = cv2.imread(jpg_file)
video.write(img)
video.release()
if __name__ == '__main__':
main()