fkeiwkblog

日記や、今時のAIの餌(学習の)を生産してます。プログラムライブラリなど

Pythonでテロップ作成 サンプルソース付き

 Pythonでテロップ作成をサンプルソース付き書きました。  動画編集をプログラムで楽できると嬉しいですよね。良ければぜひこの機会にマスターしてみましょう

サンプルソース

import cv2
import numpy as np
# テキストを描画するフォントファイルのパスを指定します
font_path = "C:/Windows/Fonts/HGRPP1.TTC"
# 動画ファイルを読み込みます
video = cv2.VideoCapture("input_video.mp4")
# テキストを描画するフォントとその大きさを指定します
font = cv2.FONT_HERSHEY_SIMPLEX
font_size = 2
# テキストの位置と色を指定します
text_position = (50, 50)
text_color = (255, 255, 255)
# テキストを描画するための画像を作成します
text_img = np.zeros((100, 500, 3), dtype=np.uint8)
cv2.putText(text_img, "テキストテロップ", (0, 70), font, font_size, text_color, thickness=3, lineType=cv2.LINE_AA)
# テキストを描画した画像の背景を黒に設定します
text_img[text_img != 0] = 0
# フォントファイルを読み込みます
font_face = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 2
font_thickness = 3
font = cv2.freetype.createFreeType2()
font.loadFontData(font_path, 0)
# 動画ファイルのフレームを1つずつ読み込み、テキストを追加して出力ファイルに書き込みます
while True:
# フレームを読み込みます
ret, frame = video.read()
# 動画ファイルをすべて読み込んだら終了します
if not ret:
break
# フレームにテキスト画像を重ね合わせます
frame[text_position[1]:text_position[1]+text_img.shape[0], text_position[0]:text_position[0]+text_img.shape[1]] = text_img
# フレームにフォントを使ってテキストを描画します
font.putText(frame, "テキストテロップ", text_position, fontScale=font_scale, color=text_color, thickness=font_thickness)
# フレームを出力ファイルに書き込みます
output.write(frame)
# ファイルを閉じます
video.release()
output.release()

カードの解説

このコードは、OpenCVを使用して、動画ファイルの各フレームにテキストテロップを追加する方法を示しています。 まず、フォントファイルのパスを指定し、動画ファイルを読み込みます。次に、テキストを描画するフォント、その大きさ、位置、色を指定します。 テキストを描画するために、まずはテキストを描画した画像を作成します。cv2.putText()関数を使用して、テキストを画像に描画します。次に、画像の背景を黒に設定します。これにより、後でフレームにテキスト画像を重ねるときに、テキストの周りに黒い背景が付くことを防ぎます。 フォントファイルを読み込み、フレームにテキスト画像を重ね、フォントを使ってテキストを描画します。最後に、出力ファイルにフレームを書き込みます。 なお、出力ファイルを作成するためのコードは示されていませんが、 cv2.VideoWriter() 関数を使用することで出力ファイルを作成することができます。また、動画ファイルを読み込んでいる部分の input_video.mp4 は、適宜自分の動画ファイル名に置き換えてください。