パソコンに内蔵されているカメラとPowerShell ISEを使い、写真撮影を自動化する方法を紹介します。
写真撮影を自動化するサンプルスクリプト
サンプルスクリプトです↓
1 2 3 |
C:\Windows\System32\cmd.exe /c start "microsoft.windows.camera:" Start-Sleep -s 1 [System.Windows.Forms.SendKeys]::SendWait("{Enter}") |
サンプルの解説
1 |
C:\Windows\System32\cmd.exe /c start "microsoft.windows.camera:" |
コマンドプロンプトを経由して、カメラの起動をします。
Excelやメモ帳などのアプリの起動方法はこちらの記事で紹介しています。
1 |
Start-Sleep -s 1 |
カメラの起動時間を待ちます。
私のPCの場合、1秒ほど待ってあげれば問題ありませんでした。
これはPCの動作環境によって異なるので、お試しください。
1 |
[System.Windows.Forms.SendKeys]::SendWait("{Enter}") |
エンターキーを押します。
Windowsのカメラはエンターキーで撮影できるので、エンターキーを入力する必要があります。
下の画像のようにカメラ起動時に、青で囲まれているマークによって撮影する内容が異なるので、あらかじめ設定しておく必要があります。
応用例1(10連射)
1秒に1回写真撮影するのを10回繰り返し、撮影後カメラの画面を閉じるサンプルスクリプトです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#カメラ起動 C:\Windows\System32\cmd.exe /c start "microsoft.windows.camera:" #1秒待機 Start-Sleep -s 1 #変数設定(カウンター) $i = 1 #10回繰り返す。($iが10以下まで繰り返す。) while ($i -le 10){ #撮影 [System.Windows.Forms.SendKeys]::SendWait("{Enter}") #1秒待機 Start-Sleep -s 1 #$iを1増やす。 $i += 1 } #カメラを閉じる。 [System.Windows.Forms.SendKeys]::SendWait("%{F4}") |
カメラを起動して待機するのはサンプルと同じです。
10回写真を撮るので、while文でループさせています。
最後、開いている画面を閉じるショートカットキー(「Alt」キー押しながら「F4」キー)を使って、カメラを閉じています。「%」=「Alt」です。
応用例2(録画)
10秒間、録画するサンプルスクリプトです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#カメラ起動 C:\Windows\System32\cmd.exe /c start "microsoft.windows.camera:" #1秒待機 Start-Sleep -s 1 #録画開始 [System.Windows.Forms.SendKeys]::SendWait("{Enter}") #10秒待機(録画中) Start-Sleep -s 10 #録画停止 [System.Windows.Forms.SendKeys]::SendWait("{Enter}") #1秒待機 Start-Sleep -s 1 #カメラを閉じる [System.Windows.Forms.SendKeys]::SendWait("%{F4}") |
上のスクリプトを実行したところ、8秒の動画になりました。
録画を開始するボタンを押してから、録画開始するまでの間に少し時間がかかる場合があります。
少し余裕を持たせて時間設定すると良さそうです。