cv2 とその他のモジュールを使用して、ビデオ ファイルをフレームに分割するスクリプトを作成しました。これまでは、ファイル パスを貼り付けてコードを実行するだけでよかったのですが、プロンプトに応じてユーザーにファイル パスと名前を入力してもらいたいと考えています。これは簡単なはずですが、 os.path を機能させるのに苦労しています。主な問題は、各画像ファイル (つまりフレーム) の名前に、シーケンス内の位置を示す番号を付けたいことです。以下のコードは私が持っているものです:
filepath = input('Please enter the filepath for the clip: ')
clip = cv2.VideoCapture(filepath)
#### This code splits the clip into scenes
filepath1 = input('Please enter the filepath for where the frames should be saved: ')
name = input('Please enter the name of the clip: ')
ret, frame = clip.read()
count = 0
ret == True
while ret:
ret, frame = clip.read()
cv2.imwrite((os.path.join(filepath1,name, '(%d)','.png') % count, frame))
count += 1
ただし、次のエラーが発生します。
cv2.imwrite((os.path.join(filepath1,name, '(%d)','.png') % count, frame))
TypeError: Required argument 'img' (pos 2) not found
% count, frame
os.path.join コマンドの括弧内に変数を含めると、別のエラーが発生します。
TypeError: not all arguments converted during string formatting
すべきことは、.pngname(x)
のような場所に呼び出された多数の .png ファイルを書き込むことMYcomputer/mydesktop/myfolder/
です。ここで何がうまくいかなかったのかわかりません。助けていただければ幸いです。