レバノン13日共同

ずっとサバイバル。

Raspberry Pi のカメラがなんか動かなかった。

ちょっと必要があって、Raspberry Piにカメラモジュールをつけて、それをdarknet-nnpackに食べさせるコードを書いていた。



darknet側の実装がほぼほぼ終わったので、あとカメラとの繋ぎ込みをやったら完了だおりゃーって実行したら、無情にもエラー。

f:id:uzuki_aoba:20190127021253p:plain
picamera
カメラモジュールはこれ。
秋葉原のどっかの店で買った、互換品で確か2000円くらい。





printデバッグで調べてみると、どうも Pythonの PiCamera モジュールを使って、 camera.capture('out.jpg') しているところでタイムアウトしている。

確認用に書いたコードこれ。

$ python3

Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import picamera
>>> camera = picamera.PiCamera()
>>> camera.resolution = (1024, 768)
>>> camera.start_preview()
<picamera.renderers.PiPreviewRenderer object at 0x76aaf930>
>>> camera.stop_preview()
>>> camera.capture('out.jpg')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/.local/lib/python3.5/site-packages/picamera/camera.py", line 1423, in capture
    'Timed out waiting for capture to end')
picamera.exc.PiCameraRuntimeError: Timed out waiting for capture to end

謎い。

  • camera.start_preview() は問題なく動作する。
  • しかし、 camera.capture('out.jpg') するとタイムアウトする。



同じモジュールで似たような問題出てる人が他にもいる。

github.com



過去に自分が書いた別のサンプルと比較しても、何も問題無さそう。





全くわからないので、別で用意していた広角レンズのカメラモジュールに交換してみた。

www.switch-science.com

上と同じものでやってみる。

f:id:uzuki_aoba:20190127022910p:plain

全く問題なし。快適。



どうも、モジュールにより問題ある?
captureするときに最初フレーム読んで諸々調整してるって話もあるので、この辺りで差が出るのかもしれない。



検証用に一個くらい公式のカメラモジュール持っているべきですね。