お兄さまは堕落しました。(インターバルタイマーその後)
もう出オチ感満載のタイトルですが……(例によってトップ画像はゆうきまさみ先生の『究極超人あーる』より)
おにいさまへ
前回作成したこのロボ、なんですけど
わずか数日で現役を引退しまして、いまはAボタン側に移動されて『自動流れ星お願いマシーン』と化しちゃっています。
あつ森では流れ星を見つけたら空を見上げてAボタンを押すと、良いことがあるのです☆
見つけるところまでは作れていないので、1.2秒間隔でAボタンおしまくっているだけの子なんですが・・・w
なぜって、アームが動くたびにぎょんぎょん音がするのでうるさくて夜通し回しておくと気になっちゃって寝れないんですもん><
そしてそして、なによりこっちが大きな理由なのですが、新型マシーンが導入されたのですよっ!!!
ニューマシン登場!
じゃーん!
始めまして、R・高峰秀子です(誰?w)
いえいえ、↑こちらです。
似たような製品は最安で1300円ぐらいからAmazonであったのですが、どれもこれも到着日がひと月以上先だったり評価があやしかったりしていたので、ちょっと奮発してこちらを購入。
Fighting for The Dreamってのも熱くていいですね。何でこんなコピーが付いてるのかわかりませんがw
とゆーわけで、今回、ワタシはお金で解決する形に堕落して、この子のお兄様(ボタン押しロボ)はお願いマシンに堕落しましたよ。というだけのお話ですw
まぁ、それだけでは何なので、ちょっとインターバル撮影のなど方法などメモ代わりに残しておくことにしましょう。
カメラアプリ
このHDMIキャプチャー、何かアプリケーションが必要かと思いましたら、単純にUSBカメラとしてPCからは認識されるようです。
USBポートに差し込んでデバイスマネージャーを見てみると
このように USB Video として認識されていました。(このPCにはもともとカメラはついていないので、初めて出てくる表示です)
そして、いままで起動したことのなかったWindowsについてるカメラアプリを起動してみると……
これ、初めて起動しますw
いきなり何の問題もなく表示されました!! すばらしいー(∩´∀`)∩☆
ただしこれだけだとムービーや、静止画の撮影はできるようですが、インターバル撮影には対応していないようです。
(2~10秒までのタイマーもついてたけれど、これってたんにn秒後にシャッターを押すってやつですよね?(使ってない))
一晩中とか長時間ずっとムービー撮り続けるのはさすがにHDD心配なので、一分ごとに静止画を残してくれる仕掛けが欲しいなというところ。
れっつPython
というわけで、Pythonさん登場です。
最初は以前(これまた)自作したコレ
で画面キャプチャをし続けようかともおもいましたが、普通にカメラとして認識できているんだからカメラデバイスからの映像をjpgに保存すればいいじゃん。となり、OpenCVでカメラキャプチャするにはどうしたらいいかなって検索すると……
これまたそのままやっているサイトを発見!(ありがたやー)というわけでまたまたほぼそのままソースをいただいて、ちょっとだけ加工しました。
import cv2
import os
import datetime
def save_frame_camera_cycle(device_num, dir_path, basename, cycle, ext='jpg', delay=1, window_name='frame'):
cap = cv2.VideoCapture(device_num)
if not cap.isOpened():
return
os.makedirs(dir_path, exist_ok=True)
base_path = os.path.join(dir_path, basename)
n = 0
while True:
#retは画像取得成功フラグ
ret, frame = cap.read()
frame = cv2.resize(frame, dsize=(1920,1080)) #FHDサイズに指定。captの後でいいのかな?
cv2.imshow(window_name, frame)
if cv2.waitKey(delay) & 0xFF == ord('q'):
break
if n == cycle:
n = 0
cv2.imwrite('{}_{}.{}'.format(base_path, datetime.datetime.now().strftime('%Y%m%d%H%M%S%f'), ext), frame)
n += 1
cv2.destroyWindow(window_name)
if __name__ == "__main__":
# 30フレームで1秒を60回繰り返した後の画像保存(最初の1週は保存されないので注意)
save_frame_camera_cycle(0, 'data/temp', 'camera_capture_cycle', 30*60)
こんなかんじ。
実行すると60秒間隔で data/temp フォルダにどんどん静止画が保存されます(∩´∀`)∩☆
キーボードの q キーで停止です。
変更点は、インターバル撮影時間の他、参考サイトのままだとデフォルトらしい800x600サイズに縮小されてしまうので、夜空の細かい確認はしづらいだろうと、1920x1080に変更。
※これ、どのサンプルを見てもcapture後にリサイズいれているのでそれに従いましたが、カメラの最大画素数で保存したい場合もこれでいいんですかねー?>自分向け宿題(後で調べましょう)
それと、
if __name__ == "__main__":
を入れて別のプログラムからも利用しやすいようにしました(今は特にいらないとおもうけれど……。)この意味については検索してね☆
てなわけで、これで、無事、機械的なロボではなく、ソフト的に自動実行されるインターバル撮影君ができたのでありました☆
機械のロボだと壊れたりしやすいけど、これなら長時間運用も問題なく行けるはずです☆
(撮影中、ゲーム操作できなくなっちゃうのはどっちも一緒なんですけどねw 日中の影撮影とかしたいんだけど、カブ価チェックがどうしてもむずかしい・・・><)
―――
オマケ:プログラミングに興味なければこれでいいじゃん編
今回のオマケはPython使わないで、完全に堕落してひと様のインターバル撮影ソフトつかうならどうする? 編です。
いろいろ検索してみて、これがベストかなというソフトみつけました。
なんだかもう、これでいいじゃんというか、これで十分(すぎる)かんじです><
LiveCapture3
こちらー。
無料で使える監視カメラソフトなんですが、細かい設定がたくさんできて、動くものを見つけたら撮影とか、その瞬間だけじゃなくて数秒前から撮ったりとか、赤外線カメラにも対応とか、スマホを使って監視カメラにしようとか、ほんと、痒い所に手が届く系の素晴らしいソフトです。
さらに、もちろん(今回使いたいのはこっち)動画じゃなくて静止画でも保存できます。
なんだかできること多過ぎてこれまたオーバースペック感満載ですが、無料ソフトなので簡単にこっち使ってもいいですね。
設定も簡単で
設定画面の「監視設定」でタイマー監視を有効にするをON、時間は1分として、隣にある[キャプチャーアクション]ボタンを押すとでてくる窓の
[静止画撮影]の中にある静止画を撮影するをON、保存先などを指定すればOK。
ここでTestボタンを押すと指定先に保存されるかどうかを確認できます。
なんだかこれ使えば万事OKな気がしますねw
こんなに簡単なら、完全に堕落してひと様のソフトつかうのでもいいかなあ。とやってみてから思ってしまった今日この頃ですw
―――
さらにその後のお話
この記事が参加している募集
よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費にさせていただきます!感謝!,,Ծ‸Ծ,,