ビデオを個々の画像に分割し、コマンドラインからG'MICを使用して7フレームごとに平均化し、その結果を新しい画像に出力してタイムラプスのフレームを作成することで、タイムラプスビデオを作成しています(このようにして、見栄えのするノイズのないビデオ)。ご想像のとおり、私にはたくさんのフレームがあります。ディレクトリには数千の個別の画像があり、順番に名前が付けられています( image1.tiff、image2.tiffなど )。ファイルの移動に最適なスクリプトを見つけました–一度…
k=1; find source/ -type f | while read file; do
[[ k++ -le 7 ]] && mv "$file" target/
done
今必要なのは、このスクリプトを作成することです
- すべてのファイルが移動されるまで繰り返し、
- 順番に番号が付けられたターゲットディレクトリ(1、2、3など)を作成すると、それぞれ7つのイメージを含む数百のディレクトリになります。
明確にするために、ディレクトリ1には画像1〜7を含める必要があり、ディレクトリ2には画像8〜14を含める必要があります。
どんな助けでも大歓迎です、私はこれでかなり立ち往生しています。
承認された回答:
以下の(python)スクリプトは、サブフォルダーを作成し、ファイルをフォルダーに整理します。
さらに:
- スクリプトはフォルダの数を計算し、適切な並べ替えのためにフォルダ名に先行ゼロを追加します(数千のファイル、つまり数百のフォルダについて言及したため)
- フォルダあたりのファイル数は、スクリプトの先頭の設定によって異なる場合があります
スクリプトは次のことを前提としています:
- すべてのファイルには拡張子があり、すべてのファイルの拡張子は同じです。 拡張機能
- ファイルの名前は
image1.tiff
、image2.tiff
など(先行ゼロなし)。
スクリプト
#!/usr/bin/env python3
import os
import math
import shutil
#---
directory = "/path/to/files" # path to your files
n_perfolder = 7 # number of files per sub folder
#--
# creating file list, extension
f_list = os.listdir(directory); ext = f_list[0].split(".")[-1]
# calculate number of folders
n_folders = math.ceil(len(f_list)/n_perfolder)
# creating folder names, including leading zeros
folders = [str(fn+1) for fn in range(n_folders)]
fl_names = [(len(max(folders, key=len))-len(fl))*"0"+fl for fl in folders]
# creating folders and allocate files
for i in range(len(fl_names)):
mkfolder = directory+"/"+fl_names[i]
if not os.path.exists(mkfolder):
os.makedirs(mkfolder)
r = range(i*n_perfolder+1, i*n_perfolder+n_perfolder+1)
for n in r:
try:
file = directory+"/"+"image"+str(n)+"."+ext
target = mkfolder+"/"+"image"+str(n)+"."+ext
shutil.copyfile(file, target)
except FileNotFoundError:
pass
使用方法
スクリプトを空のファイルにコピーします。ヘッドセクションで、ディレクトリをファイルに設定し、サブディレクトリあたりのファイル数を設定して、organize.py
として保存します。 。
次のコマンドで実行します:
python3 /path/to/organize.py
注
移動したい場合 ファイルをコピーする代わりに、次の行を置き換えます:
shutil.copyfile(file, target)
作成者:
shutil.move(file, target)
(インデントに注意してください!)
関連:ノーチラスウィンドウで背景色/パターンを設定するにはどうすればよいですか?