plant-raspberrypi3のブログ

ラズベリーパイ3とPythonに挑戦して、植物を愛でたり画像を加工したりします。最近はscikit-imageの勉強してます。

ラズパイカメラを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のプロセスをキルする方法もありましたね。そちらの方が安全そうなので、次に何かあったらそうしよう、、、