LoginSignup
0
2

More than 3 years have passed since last update.

WEBカメラ取り込みVer3

Posted at

前回作成した物。
WEBカメラ取り込みVer2

前回はGPIOを使用したプログラム。

今回は撮影枚数を指定しての撮影プログラム。

基本構成は前回と変わらず。

ライブラリ

cap_save_prg.py
import cv2
import os,os.path
from pathlib import Path
import sys
from datetime import datetime
import time

基本構成にpathlibを追加したくらい。

この辺りは色々と調べながらなので、結構適当です。

保存先とファイル名の定義

cap_save_prg.py
save_dir_path = '保存先'
filename = 'ファイル名'

お好みの場所で構いません。
最近はデスクトップ上にフォルダを作成してその中でプログラム保存や
撮影画像の保存を行う様にしています。

ディレクトリの作成

cap_save_prg.py
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')

いつも通りとなっています。

使用デバイスの定義

cap_save_prg.py
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()で問題ないです。

画像撮影

cap_save_prg.py
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つずつ改良していくしかないなぁ~と思い
まぁショボい物をアップして悶えながらやってます。

以上です。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2