忘れない為のメモ書き程度となります。
WEBカメラを使用した画像取得及び保存に関するプログラム。
初学者が何とか辿り着いた答えの1つなので
見る人が見れば拙いのがご了承下さい。
出来ればアドバイスを頂けるとありがたいです。
環境
Windows10(64bit)
anacondanavigator
python3(3.7.7)
opencv(3.4.2)
使用ライブラリ
import cv2
import sys
import os
from datetime import datetime
ディレクトリ作成及びファイル名に日付を使いたいので
os
とdatetime
を使用しています。
保存先とファイル名の定義
#保存ディレクトリの指定及びデータ名の定義
dir_path = '保存先'
basename = 'ファイル名'
使用デバイスの定義
cap = cv2.VideoCapture(0)
(0)
はPC内蔵カメラを使用する設定となっているので
webカメラ(USBカメラ)を接続した際は(1)
にすると認識。
ディレクトリの作成
os.makedirs(dir_path,exist_ok=True)
base_path = os.path.join(dir_path,basename)
datename = datetime.now().strftime('%m%d%H%M')
os.makedirs
で保存先ディレクトリ(dir_pathにて設定した場所)に画像保存先を作成する。
保存先が存在すれば異常なく次に行きます。
os.path.join
でパスを結合。
datetime
はファイル名に取得時間を付けたい為に設定しています。
画像撮影
n = 0
while True:
ret,frame = cap.read()
cv2.imshow(basename,frame)
key = cv2.waitKey(1) & 0xFF
if key == ord('o'):
cv2.imwrite((base_path + datename +'_'+ str(n) + ".png"),frame)
n += 1
elif key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
撮影画像自体に連番をつけたいので最初にn = 0
を設定
あとはキーボード『O』を押せばcv2.imwrite((base_path + datename +'_'+ str(n) + ".png"),frame)
で
指定したフォルダ内に画像を保存します。
もっとスタイリッシュな書き方があると思いますが
私自身が『どこに』『どんな名前で』とわかりやすくするためにこのフォーマットにしています。
画像撮影→保存に関しては特に問題なく出来ました。
raspberrypi(stretch)にthonnyで実装しても問題なく走りました。
以上です。