パソコン用の無音カメラをPythonで作る
パソコン用無音カメラを作りましたので作り方を紹介したいと思います。
前はPowerShellでカメラを自動操作するやつを作ったんですけど、ちょっと動作が不正操作っぽくって、怪しいんでPythonで無音カメラを作りました。
動作条件
OSはWindows10以降
ノートPCまたはWEBカメラ付きデスクトップ
言語はPython
PythonをExe化するのでPython非搭載のパソコンでも動く
環境準備
1.Pythonをインストール
まずは、Pythonをインストールします。インストール済みなら読み飛ばしてください。
Windowsの画面左下にあるスタートアイコンを右クリックしてWindows10ならPowerShell(管理者)、Windows11ならターミナル(管理者)を選んでPowerShellを立ち上げます。そしてPowerShell画面に次のコマンドを入力するとインストールできます。
winget install -i --id Python.Python.3.12 #3.12のところは最新版の数字がいい
2.OpenCVインストール
Pythonでカメラを扱うためにOpenCVというライブラリをインストールします。PowerShellを立ち上げるか、ターミナルを開いて次のコマンドを入力します。
pip install opencv-contrib-python
プログラム
次がPythonのプログラムです。
メモ帳などに貼り付けてmuon_camera.pyとかで保存してください。
import os
import sys
import winreg
import cv2
import datetime
# 実行中のフォルダを取得
def get_executable_directory():
if getattr(sys, 'frozen', False): # PyInstallerでコンパイルされた場合
executable_path = sys.executable
else:
executable_path = __file__
return os.path.dirname(os.path.abspath(executable_path))
# カメラロールフォルダを取得
def get_cameraroll_folder():
# レジストリキーのパス
reg_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
reg_name = "My Pictures"
pictures_folder = ""
# レジストリキーを開く
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path) as key:
# フォルダパスを取得
pictures_folder = winreg.QueryValueEx(key, reg_name)[0]
if pictures_folder != "":
pictures_folder += "\\Camera Roll\\"
if (os.path.exists(pictures_folder) and os.path.isdir(pictures_folder)):
return pictures_folder
else:
return get_executable_directory()
# 現在の日時を取得
def get_current_datetime_formatted():
now = datetime.datetime.now()
formatted_datetime = now.strftime("%Y%m%d_%H%M%S")
return formatted_datetime
# 画像を保存先を取得する
cameraroll_folder = get_cameraroll_folder()
# カメラを開く
cap = cv2.VideoCapture(0)
# 画像をキャプチャする
ret, frame = cap.read()
if ret == True:
# 画像名作成
imagename = get_current_datetime_formatted() + ".jpg"
# 画像を保存する
cv2.imwrite(cameraroll_folder+imagename, frame)
# カメラを閉じる
cap.release()
保存出来たらテスト実行してみましょう。
PowerShell画面に次のコマンドを打ち込みます。
python muon_camera.py
カメラのライトが一瞬光って、カメラロールフォルダに写真が保存されたら成功。
全く無音でほとんど気づかれないことが分かります。
Exe化
Pythonがインストールされていない環境でも使えるようにEXE化します。
詳しくは「pyinstall python」で検索してほしいのですが、最低限必要なコマンドだけ書きます。
exe化に必要なpyinstallerをインストール
pip install pyinstaller
exe化
pyinstaller muon_camera.py --onefile --noconsole
これでmuon_camera.exeというファイルが出来上がり。
このmuon_camera.exeはPythonが入っていないパソコン上でも動作します。
一瞬だけカメラランプが光り、撮影して、カメラロールフォルダに保存されます。
#WEBカメラ #無音カメラ #Python #PowerShell #資産管理システム #SkySea #LanScope