SSブログ

Raspberry Pi 3 Model B + Camera V2.1 picamera2 web.py 失敗 [プログラミング]

前回は、libcamera-stillで静止画が撮れるところまでを記録した。 次に、カメラで撮影した画像を、外から見られるようにしたくなった。動画として見られるとよいのだが、まずは静止画がみられることを目標にした。 まずは、pythonのpicamera2とwebpyで、あるurlにアクセスしたら静止画を撮ってそれを返すプログラムを作ることにした。 1. picamera2 このページを参考に環境を構築した。 https://github.com/raspberrypi/picamera2

  1. sudo apt install -y python3-pyqt5 python3-opengl
  2. sudo apt install -y python3-picamera2 --no-install-recommends

2. web.py

    1. pip install web.py==0.61
      • "==0.61"の意味はわかってない。
    2. app.py
      • import web


        import io


        import time


        from picamera2 import Picamera2




        urls = (


           "/",


           "index"


        )




        class index:


           def __init__(self):


             self.cam = Picamera2()


             self.capture_config = self.cam.create_still_configuration()


             self.cam.configure(self.cam.create_preview_configuration())


           def GET(self):


             self.cam.start()


             time.sleep(1)


             data = io.BytesIO()


             self.cam.capture_file(data, format='jpeg')


             self.cam.stop()


             return(data.getvalue())


             #image = open("/home/python/Pictures/camera.jpg", "rb").read()


             #return image




        if __name__ == '__main__':


           app = web.application(urls, globals())


           app.run()




        ファイルに保存してからそれを返すのではなく、メモリ中にjpgイメージを作ってそれをかえすことで、ディスクの寿命を延ばす作戦。
    1. 実行
    2. 最初のアクセスには、正しく静止画を返してくれたが、2回目のアクセスで落ちる。
        $ python app.py




        [1:43:46.506893147] [2163] INFO Camera camera_manager.cpp:297 libcamera v0.0.5+83-bde9b04f


        [1:43:46.598907128] [2180] WARN RPI vc4.cpp:383 Mismatch between Unicam and CamHelper for embedded data usage!


        [1:43:46.600689216] [2180] INFO RPI vc4.cpp:437 Registered camera /base/soc/i2c0mux/i2c@1/imx219@10 to Unicam device /dev/media3 and ISP device /dev/media1


        [1:43:46.600802029] [2180] INFO RPI pipeline_base.cpp:1101 Using configuration file '/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml'


        [1:43:46.616782902] [2163] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-XBGR8888 (1) 640x480-SBGGR10_CSI2P


        [1:43:46.618274573] [2180] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx219@10 - Selected sensor format: 640x480-SBGGR10_1X10 - Selected unicam format: 640x480-pBAA


        192.168.10.23:56710 - - [09/Oct/2023 13:40:27] "HTTP/1.1 GET /" - 200 OK


        192.168.10.23:56710 - - [09/Oct/2023 13:40:27] "HTTP/1.1 GET /favicon.ico" - 404 Not Found


        [1:45:28.564968768] [2165] ERROR Camera camera.cpp:525 Camera in Configured state trying acquire() requiring state Available


        Camera __init__ sequence did not complete.


        Traceback (most recent call last):


        File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 242, in __init__ self._open_camera() File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 446, in _open_camera self.camera.acquire() RuntimeError: Failed to acquire camera: Device or resource busy




        During handling of the above exception, another exception occurred:




        Traceback (most recent call last):


        File "/home/python/.local/lib/python3.9/site-packages/web/application.py", line 280, in process


        return self.handle()


        File "/home/python/.local/lib/python3.9/site-packages/web/application.py", line 271, in handle


        return self._delegate(fn, self.fvars, args)


        File "/home/python/.local/lib/python3.9/site-packages/web/application.py", line 514, in _delegate


        return handle_class(cls)


        File "/home/python/.local/lib/python3.9/site-packages/web/application.py", line 491, in handle_class


        tocall = getattr(cls(), meth)


        File "/home/python/Documents/prog/webpy/app.py", line 13, in __init__


        self.cam = Picamera2()


        File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 254, in __init__


        raise RuntimeError("Camera __init__ sequence did not complete.")


        RuntimeError: Camera __init__ sequence did not complete.




        192.168.10.23:56740 - - [09/Oct/2023 13:42:08] "HTTP/1.1 GET /" - 500 Internal Server Error

次回は、これの修正を試みる。

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Raspberry Pi 3 Model..Raspberry Pi 3 Model.. ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。