美しくないプログラム | python3Xのブログ

python3Xのブログ

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

カラー化の自動化ですが

ただ単に色んなプログラムを引っ付けただけのものです

結果はまだ分かりません

失敗で笑えるかも知れません

 

元のコードを実行したのですが

動画の順番が滅茶苦茶になり

目が点になりました

取り敢えず私なりに書き換えます

あと、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()