名前に現在時刻を入れたファイルが連番かどうか判定(後半)
名前に現在時刻を入れたファイルが連番かどうか判定(後半) 前回からの続きです。 前回は連番になっていたらまとめてリスト化しましたが、今回はまとめたファイルを動画に変換して書き出します。 コードはGitHubリポジトリにあ […]
Filter by Category
名前に現在時刻を入れたファイルが連番かどうか判定(後半) 前回からの続きです。 前回は連番になっていたらまとめてリスト化しましたが、今回はまとめたファイルを動画に変換して書き出します。 コードはGitHubリポジトリにあ […]
名前に現在時刻を入れたファイルが連番かどうか判定(前半) なにかアクションがあった際に生成されるファイル名に現在時刻が入ったファイルが、連番になっているかどうかを判別して連番になっていたらまとめてリスト化する方法です。手 […]
Beautiful Soupでbrタグを改行コードに変換する Beautiful Soupでスクレイピングしたdivタグ内にbrタグがあった際に改行コードに変換する方法です。以下のコードはbrタグが複数ある場合にも対応し […]
フォルダ内のファイルを複数毎にzip形式に圧縮 ファイルをまとめてzip形式に圧縮してしまうと容量が増えてしまうので、メールなどで送るために複数個に分けて圧縮ファイルを作りたいときがあります。ファイル数がそれほど多くない […]
OpenCVで複数の画像から動画ファイルを作る 前回に続き、今回は複数の画像をまとめて動画ファイルに変換する方法です。gifアニメーションを生成するときはPillowを使いましたが、動画を生成するときはOpenCVを使い […]
複数の画像からgifアニメーションを作る 定点撮影などで連番になっている複数の画像をまとめてgifアニメーションに変換する方法です。 コードはGitHubリポジトリにあげています。 コード 結果 解説 import gl […]
SeleniumでChromeが立ち上がらない Pythonでスクレイピングする時にSeleniumでChromeを立ち上げますが、その際に以下のエラーが出てブラウザが起動しない場合があります。その時の解決方法です。 解 […]
ダウンロードするファイルの文字コードを動的に変更 ウェブアプリケーションの中でCSVやテキストファイルをダウンロードさせた時に文字化けが発生する事があります。使用する文字コードが決まっていれば予め固定してしまう事で文字化 […]
画像のアップロード Google Colaboratoryで画像をアップロードして表示する方法です。画像解析以外にもCSVのアップロードなどの際にも同じ方法でアップロードできます。 画像のインライン表示 今度はアップロー […]
以下の2つの記事の応用編です。 今回のポイントは以下の2つです。 ・気温の処理を関数化・Matplotlibで複数のグラフを出力 コードはGitHubリポジトリにあげています。 コード 出力結果 以下の様な気温と降水確率 […]
前回作った気象庁のサイトからBeautifulSoup4を使ってスクレイピングするプログラムの応用編として、今回はiOSアプリのPythonistaを使って最高気温と最低気温をグラフ化します。グラフ化にはMatplotl […]
気象庁の天気予報をBeautifulSoup4でスクレイピングします。サンプルとして群馬県の週間天気予報(場所、日付、曜日、最高気温、最低気温)を取得します。 コードはGitHubリポジトリにあげています。 週間天気予報 […]
Beautiful Soupで以下のようなHTMLのoptionタグのvalueを取得する方法です。 optionタグのvalueの値を取得する方法 soup = soup.find_all('option')optio […]
以下のような、attachmentをつけて即ダウンロードが始まるシステムで、文字コードをShift-JISにする為にto_csv()の引数にencodingをShift-JISに設定しても、ダウンロードするとUTF-8で […]
Pillowを使って画像を合成する方法です。GitHubリポジトリ 上の2つの画像を合成して、下の画像を生成します。 Pillowのインストール バージョン確認 ディレクトリ構造 画像をリサイズ base_image = […]
Pillowを使って画像をリサイズする方法です。GitHubリポジトリ Pillowのインストール バージョン確認 ディレクトリ構造 画像をリサイズ files = glob.glob('./images/*')imag […]
Pillowを使って画像をクロッピングする方法です。ソースコードはGitHubにあげています。 Pillowのインストール バージョン確認 ディレクトリ構造 画像をクロッピング files = glob.glob('./ […]
Pythonistaには多くのモジュールがプリインストールされていて、スクレイピングに必要なBeautifulSoupも初めから使える様になっています。そこで、今回はiOSアプリのPythonistaを使ってiPhone […]
DjangoのWEBプリケーションでCSVをpandasで読み込んでforで一行ずつループ処理をしたところ、毎回決まったところで決まったエラーが出たのでPyCharmのデバッグ機能を使って原因を調べた内容です。 プログラ […]
Pythonであるフォルダ内のファイルを別のフォルダにコピーする方法です。 ディレクトリ構造(ファイルのコピー後) directory = (os.getcwd())現在のディレクトリを取得します。 image_path […]
前回からの続きです。
前回は連番になっていたらまとめてリスト化しましたが、今回はまとめたファイルを動画に変換して書き出します。
コードはGitHubリポジトリにあげています。
開発環境
$ python -V
Python 3.7.0
$ tree
.
├── dir.txt
├── requirements.txt
├── sequeucetovideo.py
└── video
モジュールをインストールします。
リポジトリからクローンした場合は、以下のコマンドで必要なモジュールを一括インストールできます。
pip install -r requirements.txt
手動でインストールする場合は、以下のコマンドを入力します。
pip install opencv-python
sequeucetovideo.py
import datetime
import glob
import cv2
f = open("dir.txt", "r")
files = sorted(glob.glob(f.read()))
split_file_name = ''
file_time_plus_one_seconds = ''
sequence_list = []
sequence_img = []
for file in files:
split_name = file.split('-')
file_time = datetime.datetime.strptime(split_name[2], '%Y%m%d%H%M%S')
if not sequence_list:
sequence_list.append(file)
img = cv2.imread(file)
sequence_img.append(img)
elif split_file_name == file_time or file_time_plus_one_seconds == file_time:
sequence_list.append(file)
img = cv2.imread(file)
sequence_img.append(img)
else:
first_file_split_name = sequence_list[0].split('.')
first_file_split_name = first_file_split_name[0]
first_file_split_name = first_file_split_name.split('/')
first_file_split_name = first_file_split_name[-1]
last_file_split_name = sequence_list[len(sequence_list) - 1].split('.')
last_file_split_name = last_file_split_name[0]
last_file_split_name = last_file_split_name.split('/')
last_file_split_name = last_file_split_name[-1]
height, width, layers = img.shape
size = (width, height)
name = 'video/' + first_file_split_name + '-to-' + last_file_split_name + '.mp4'
out = cv2.VideoWriter(name, cv2.VideoWriter_fourcc(*'MP4V'), 3.0, size)
for i in range(len(sequence_list)):
out.write(sequence_img[i])
out.release()
sequence_list.clear()
sequence_list.append(file)
sequence_img.clear()
img = cv2.imread(file)
sequence_img.append(img)
split_file_name = file_time
file_time_plus_one_seconds = file_time + datetime.timedelta(seconds=1)
sequence_img = []
動画変換用に連番ごとにまとめたファイルを格納するリストを生成
img = cv2.imread(file)
ファイルを読み込む
first_file_split_name = sequence_list[0].split('.')
first_file_split_name = first_file_split_name[0]
first_file_split_name = first_file_split_name.split('/')
first_file_split_name = first_file_split_name[-1]
リストの最初のファイル名を取得して.で区切る
.の前を名前を取得(.jpgの前のファイル名を取得)
今回はファイルが複数階層のディレクトリにあることを前提にしているので/で区切る
/で区切った最後の文字列を取得
last_file_split_name = sequence_list[len(sequence_list) - 1].split('.')
last_file_split_name = last_file_split_name[0]
last_file_split_name = last_file_split_name.split('/')
last_file_split_name = last_file_split_name[-1]
リストの最後のファイル名を取得して.で区切る
.の前を名前を取得(.jpgの前のファイル名を取得)
今回はファイルが複数階層のディレクトリにあることを前提にしているので/で区切る
/で区切った最後の文字列を取得
name = 'video/' + first_file_split_name + '-to-' + last_file_split_name + '.mp4'
新しく生成する動画ファイルの名前を生成
今回はvideoフォルダにリストの最初のファイル名と最後のファイル名の間に-to-をはさんだ名前を生成
out = cv2.VideoWriter(name, cv2.VideoWriter_fourcc(*'MP4V'), 3.0, size)
mp4ファイルを生成
群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。
Comments