WEBカメラでリアルタイムで撮影した画像を連番保存したいです。
画像の保存までは以下のコードでできていますが、
連番というところでつまづいております。
(エラーというよりも方法がわからないです。)
工夫点してみたこと
①
digit = len(str(int(cap.get(cv2.CAP_PROP_FRAME_COUNT))))
cv2.imwrite('{}{}{}.{}'.format(base_path, datetime.datetime.now().strftime('%Y%m%d%H%M'), digit, ext), frame)
→保存画像のファイル名:capture_202012211018_2.png
②cv2.imwrite('{}{}{}.{}'.format(base_path, datetime.datetime.now().strftime('%Y%m%d%f'), f{i:03d},ext), frame)
→f{i:03d}が名称NGで実行できない
表示されるエラー内容
File "c:\Users\takamatsu-k\Desktop\change_gui\logicool4.py", line 29
cv2.imwrite('{}{}{}.{}'.format(base_path, datetime.datetime.now().strftime('%Y%m%d%f'), f{i:03d},ext), frame) ^
SyntaxError: invalid syntax
私の目標としては
capture_202012211018_1.png
capture_202012211018_2.png
...
capture_202012211018_n.png
です
どうかご教授お願いいたします。
python
1 2import cv2 3import os 4import datetime 5 6org_dir = "C:/Users//Desktop/change_gui" 7 8def save_frame_camera_cycle(device_num, basename, cycle, ext='png', delay=1, window_name='frame'): 9 cap = cv2.VideoCapture(0) 10 11 if not cap.isOpened(): 12 return 13 14 fld_dir = org_dir + '\try\' 15 os.makedirs(fld_dir, exist_ok=True) 16 base_path = os.path.join(fld_dir, basename) 17 18 19 20 n = 0 21 while True: 22 ret, frame = cap.read() 23 cv2.imshow(window_name, frame) 24 if cv2.waitKey(delay) & 0xFF == ord('q'): 25 break 26 if n == cycle: 27 n = 0 28 cv2.imwrite('{}_{}.{}'.format(base_path, datetime.datetime.now().strftime('%Y%m%d%H%M'), ext), frame)#ファイル名が同じ時間 29 30 31 n += 1 32 33 cv2.destroyWindow() 34 35 36save_frame_camera_cycle(0, 'capture', 50)
回答1件
あなたの回答
tips
プレビュー