前回作成した物。
WEBカメラ取り込みVer2
前回はGPIOを使用したプログラム。
今回は撮影枚数を指定しての撮影プログラム。
基本構成は前回と変わらず。
##ライブラリ
import cv2
import os,os.path
from pathlib import Path
import sys
from datetime import datetime
import time
基本構成にpathlib
を追加したくらい。
この辺りは色々と調べながらなので、結構適当です。
##保存先とファイル名の定義
save_dir_path = '保存先'
filename = 'ファイル名'
お好みの場所で構いません。
最近はデスクトップ上にフォルダを作成してその中でプログラム保存や
撮影画像の保存を行う様にしています。
##ディレクトリの作成
os.makedirs(save_dir_path,exist_ok=True)
base_path = os.path.join(save_dir_path,filename)
datename = datetime.now().strftime('%m%d%H%M')
いつも通りとなっています。
##使用デバイスの定義
device_id = 0
width = 640
height = 480
fps = 30
cap = cv2.VideoCapture(device_id)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
cap.set(cv2.CAP_PROP_FPS, fps)
今回は調べている中でOpencvの機能を設定が出来る下りの記述を見つけたので
試しに使ってみようと思い、盛った記述になっています。
まぁ撮影するだけならcv2.VideoCapture()
で問題ないです。
##画像撮影
n = 0
while True:
ret,frame = cap.read()
cv2.imshow(filename,frame)
key = cv2.waitKey(1) & 0xFF
cv2.imwrite((base_path + datename +'_'+ str(n) + ".png"),frame)
pathl,dirsl,filesl = next(os.walk(save_dir_path))
file_count = len(filesl)
print(file_count)
time.sleep(0.2)
cap.release
n += 1
if file_count == 100:
break
今回はプログラムスタートと同時に撮影がスタート
保存先のディレクトリ内ファイル数をカウントする様にしています。
設定値に到達でプログラムストップとなります。
本当ならcv2.imwrite
の前にif key == ord('s'):
を入れてキーボードを押したら
撮影スタートにしたかったんですが
NameError:name 'file_count' is not defined
が発生。
色々と調べたけど、解消出来なかったので一旦ヨシとしました。
##まとめ
一つのプログラムであれもこれもしようとしてしまうので私の頭脳では対処しきれず知恵熱発生…
作った物を1つずつ改良していくしかないなぁ~と思い
まぁショボい物をアップして悶えながらやってます。
以上です。