定点観測で撮影した大量の画像を動画に変換する場合、それなりにCPUパワー、時間が必要になるので、Google Colaboratoryでできるようにしてみました。撮影した静止画はいったんGoogle Driveにため込んでおいて、定期的に手動でノートブックを開いて実行することにしました。ソースは以下の通りです。
In [ ]:
! pip install opencv-python
In [ ]:
from google.colab import drive
drive.mount('/content/drive')
In [ ]:
! ls /content/drive/MyDrive/img/*.jpg | wc
In [ ]:
import cv2
import os
# 画像が保存されているディレクトリ
image_folder = '/content/drive/MyDrive/img'
# 出力する動画ファイルの名前
video_name = 'output_video.mp4'
images = [img for img in os.listdir(image_folder) if img.endswith(".png") or img.endswith(".jpg")]
images = sorted(images)
frame = cv2.imread(os.path.join(image_folder, images[0]))
# 動画のフレームサイズを取得
height, width, layers = frame.shape
video = cv2.VideoWriter(video_name, cv2.VideoWriter_fourcc(*'mp4v'), 1, (width, height))
for image in images:
video.write(cv2.imread(os.path.join(image_folder, image)))
cv2.destroyAllWindows()
video.release()
In [ ]:
# ファイル削除
for image in images:
try:
os.remove(os.path.join(image_folder, image))
# print(f"{file_path} を削除しました。")
except FileNotFoundError:
print(f"{image} が見つかりませんでした。")
except PermissionError:
print(f"{image} の削除権限がありません。")
except Exception as e:
print(f"{image} の削除中にエラーが発生しました: {e}")
In [ ]:
from google.colab import auth
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google.oauth2.credentials import Credentials
# ユーザー認証を行う
auth.authenticate_user()
# 認証情報を取得
creds, _ = google.auth.default()
# Google Drive APIサービスを構築
service = build('drive', 'v3', credentials=creds)
def delete_trashed_files(service):
while True:
try:
# ごみ箱の中のファイルを取得
results = service.files().list(q="trashed=true").execute()
items = results.get('files', [])
if not items:
print("ゴミ箱は空です。")
break
# ごみ箱の中のファイルを削除
for item in items:
service.files().delete(fileId=item['id']).execute()
print(f"Deleted file: {item['name']}")
except HttpError as error:
print(f"An error occurred: {error}")
break
print("ごみ箱を空にしました。")
# メイン関数を定義
def delete_main():
delete_trashed_files(service)
# メイン関数を実行
delete_main()
ほとんどChatGPTに作ってもらいました。動画にした画像は全部削除してます。ただ、削除しただけだとゴミ箱に残ってしまうので、ゴミ箱もきれいさっぱり削除してます。
Comments