Raspberry Pi のカメラがなんか動かなかった。
ちょっと必要があって、Raspberry Piにカメラモジュールをつけて、それをdarknet-nnpackに食べさせるコードを書いていた。
darknet側の実装がほぼほぼ終わったので、あとカメラとの繋ぎ込みをやったら完了だおりゃーって実行したら、無情にもエラー。
カメラモジュールはこれ。
秋葉原のどっかの店で買った、互換品で確か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')
するとタイムアウトする。
同じモジュールで似たような問題出てる人が他にもいる。
過去に自分が書いた別のサンプルと比較しても、何も問題無さそう。
全くわからないので、別で用意していた広角レンズのカメラモジュールに交換してみた。
上と同じものでやってみる。
全く問題なし。快適。
どうも、モジュールにより問題ある?
captureするときに最初フレーム読んで諸々調整してるって話もあるので、この辺りで差が出るのかもしれない。
検証用に一個くらい公式のカメラモジュール持っているべきですね。