anaconda-navigator
・過去の白黒画像や白黒動画(モノクロ動画)をカラー化したいと思ったことはありませんか?
・しかもそれがPhotoshopなどの高いソフトの購入=要らない
画像処理のスペシャリストになる何か月~何年もの修行=要らない
としたら・・・。
・そこにあるボタン一つをポンと押す
=コマンドのエンターボタンを押すだけで
あとはただ待つだけ
PCが勝手にやってくれる
のだとしたら・・・。
・ここでは、そういった方法を紹介します。
ここでの目的は自力で私と同じように白黒動画をカラー化できるまでサポートすることにあります。
順を追って説明していきますので、躓いたりした際は分かる範囲でサポートさせていただきます。
出来るだけ5W1Hでの質問をお願いします。
コマンドプロンプトと同じことですが
Anaconda Navigatorを紹介いたします。
もっと便利な使い方があると思うのですが
ここでは基本的な使い方をお伝えしたいと思います。
① スタートメニューから「Anaconda3(64-bit)」を選択
②Anaconda Navigator(Anaconda3)選択
仮想環境の設定は後程説明しますが
ここでは、取り敢えず「base」での説明を致します。
③Environments ⇒ base(root)と選択
④「Open Terminal」を選択
コマンドプロンプトが立ち上がる。
ここでは例としてTensorflowのアップデートを行います。
yesかnoを聞かれたら「y」と入力後「Enter」キーを押す
アップデート完了
⑤コマンド「conda install pathlib」入力が「Enter」キーを押す
⑥Proceed ([y]/n)?は「y」を入力後「Enter」キーを押す
基本「conda」コマンドでインストールできない場合は「pip」でインストールしてください。
「pip install Pillow」
「conda install -c conda-forge opencv」
「pip install requests」
これで準備が整いました。
あとはコードを実行するだけです。
途中でエラーが出た際はメール頂ければわかる範囲でサポートいたします。
コード
# coding: utf-8
from pathlib import Path
from PIL import Image, ImageSequence
import cv2
import glob
import requests
# モノクロmp4へのパス
IMAGE_MONO_PATH = ‘roma3.mp4’
# 生成されるカラーmp4へのパス
IMAGE_COLOR_PATH = ‘roma01.mp4’
outname = ‘roma’
# 分割したモノクロ画像生成フォルダ
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) # デフォルトでは30fps(29.97fps)
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(‘roma01.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()
この記事へのコメントはありません。