ラズパイカメラをJupyter Notebookから操作してハマった話
こんばんは。らずべりーです。
安易に実行すると危ないことがあるよ、という自分への教訓用のメモです。
久々にラズパイカメラをいじった
以前はraspistillなどでターミナルから操作していましたが、
plant-raspberrypi3.hatenablog.com
MobileNetやXceptionの画像認識と組み合わせていきたいなぁ、ということで、python-picameraを使ってみることに。
せっかくなら、Jupyter notebookから操作していろいろやりたいなー、ということでpyenv環境にJupyterを入れ直しました。
$ pip install jupyter
今回は特に何も問題なくすんなりいきました。よかった(´∀`*)ホッ
とりあえずプレビューしてみた
早速使ってみよう!ということで、とりあえずプレビュー。
#このコードは危険なハマりコードなのでそのままコピペしてはいけません! import picamera with picamera.PiCamera() as camera: camera.start_preview()
実行するとプレビューが全画面表示になります。
よしよし、と思ったのもつかの間、
「あれ?どうやって終了するんだっけ?ヽ(・д・!i!i)ノ」
キーボードを叩けども叩けどもうんともすんとも反応はなし。ドキュメントなどには「ターミナルからの実行だとCtrl+Dで終了できるよ!」と書いてあるものの、Jupyter Notebookにはなんの効力も発揮しませんでしたorz
これは、コンセントを抜くしかないのか、、、(´;ω;`) ブワッ
しかし実行中に抜いたらSDカードが壊れるかも、、、(´;ω;`)ブワッ
とパニクっていたところ、ふと
「そういえばiPhoneからSSH接続できるようにしてたわ」
plant-raspberrypi3.hatenablog.com
と思い出し、iPhoneのTerminiusアプリからSSH接続して
sudo reboot
しばらく待つとちゃんと立ち上がりました。壊れなくてよかったーε-(´∀`*)ホッ
ちゃんとドキュメントを読んでから始めないとだめですね。(こんなことをする無鉄砲ものは私くらいかもしれませんが、、、)
以下が公式ドキュメントにある安全なコードです。
picamera — Picamera 1.10 documentation
import time import picamera with picamera.PiCamera() as camera: camera.start_preview() time.sleep(10) camera.stop_preview()
stop_previewまでコードに書いてから実行しないと危険!
というお話でした。
真面目にドキュメント読もう、、、
おまけ
ちなみに、最近やっとwith
関数の使い方を把握しました、、、close
しなくて良いのは便利ですね。
おまけ2
そういえば、SSH接続でJupyterのプロセスをキルする方法もありましたね。そちらの方が安全そうなので、次に何かあったらそうしよう、、、