1
4

More than 3 years have passed since last update.

WEBカメラ取り込み

Last updated at Posted at 2020-06-01

忘れない為のメモ書き程度となります。

WEBカメラを使用した画像取得及び保存に関するプログラム。
初学者が何とか辿り着いた答えの1つなので
見る人が見れば拙いのがご了承下さい。

出来ればアドバイスを頂けるとありがたいです。

環境
Windows10(64bit)
anacondanavigator
python3(3.7.7)
opencv(3.4.2)

使用ライブラリ

cap_save.ipynb
import cv2
import sys
import os
from datetime import datetime

ディレクトリ作成及びファイル名に日付を使いたいので
osdatetimeを使用しています。

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

cap_save.ipynb
#保存ディレクトリの指定及びデータ名の定義
dir_path = '保存先'
basename = 'ファイル名'

使用デバイスの定義

cap_save.ipynb
cap = cv2.VideoCapture(0)

(0)はPC内蔵カメラを使用する設定となっているので
webカメラ(USBカメラ)を接続した際は(1)にすると認識。

ディレクトリの作成

cap_save.ipynb
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はファイル名に取得時間を付けたい為に設定しています。

画像撮影

cap_save.ipynb
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で実装しても問題なく走りました。

以上です。

1
4
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
1
4