はじめに
がちもとさんアドベントカレンダー16日目の記事です。
今日は、横長の画像から横スクロール画像を作ります。
開発環境
- Windows 11 PC
- Python 3.11
導入
1.ライブラリのインストール
pip install opencv-python
2.横長の画像を用意(昨日の結果を用います。)
3.プログラムを作成
import cv2
import numpy as np
# 入力画像ファイル名
input_image_file = 'result.png'
# 出力動画ファイル名
output_video_file = 'result.mp4'
# 入力画像の読み込み
input_image = cv2.imread(input_image_file)
# 入力画像のサイズを取得
height, width, _ = input_image.shape
print(height, width)
# 出力動画の設定
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # 動画コーデックを設定
output_video = cv2.VideoWriter(output_video_file, fourcc, 60.0, (1024, 1024)) # 動画ファイルを作成
# ROIを指定する左上座標とサイズ
roi_x = 0 # 初期位置
# ROIを横にスクロールさせながら動画を作成
for i in range(0, width-1024, 1):
# ROIを切り取る
roi = input_image[:, i:i + 1024, :].copy()
# 動画にROIを追加
output_video.write(roi)
# 動画をクローズ
output_video.release()
# ウィンドウを閉じる
cv2.destroyAllWindows()
コード解説
1.cv2モジュールとnumpyモジュールをインポートします。
2.入力画像ファイル名と出力動画ファイル名を設定します。
3.入力画像を読み込みます。
4.入力画像の高さと幅を取得し、変数 height と width に格納します。
5.出力動画の設定を行います。動画のコーデックは 'mp4v' を使用し、1秒あたり60フレーム、フレームのサイズを1024x1024に設定します。
6.ROI(Region of Interest)を指定するための変数 roi_x を初期化します。
7.ROIを横にスクロールさせながら、動画を作成します。ループを使用して、ROIが画像の左端から右端まで移動するようにします。
8.各イテレーションで、ROIを切り取り、それを出力動画に追加します。
9.動画の作成が終了したら、出力動画ファイルを閉じます。
10.最後に、すべてのウィンドウを閉じます。
実行結果
お疲れさまでした