在Raspberry Pi上运行的Docker容器中访问picamera时出错

问题描述

我正在Raspberry Pi 4上使用docker-compose运行Docker容器,并想在Python中使用picamera模块访问PiHQCam。我尝试使用本教程https://www.losant.com/blog/how-to-access-the-raspberry-pi-camera-in-docker使它起作用。但是,当尝试构建图像时,它给了我这个错误:

ValueError: This system does not appear to be a Raspberry Pi

然后我尝试了自己的解决方案(见下文),但遇到了此错误:

picamera.exc.PiCameraMMALError: Failed to create MMAL component b'vc.camera_info': I/O error

这是我的设置:

docker-compose.yml

version: '3.8'

services: 
  camera:
    build: camera
    image: eye_camera     
    devices:
      - /dev/vchiq

Dockerfile

FROM balenalib/rpi-raspbian:latest

RUN apt-get update && \
    apt-get upgrade && \
    apt-get install -y python3 \
      python3-pip

WORKDIR /app

COPY requirements.txt .
RUN pip3 install -r requirements.txt

COPY . .

RUN groupadd -r -g 888 app && \
    useradd -r -u 888 -g app -d /app app && \
    chown -R app:app /app && \
    usermod -a -G video app
USER app

CMD ["python3","./main.py"]

main.py

import picamera

def main():
    print("Hello World!")

    cam = picamera.PiCamera()
    img = picamera.array.PiRGBArray(cam)
    cam.capture(img)
    cam.close()

if __name__ == '__main__':
    main()

初始化相机时,PiCameraMMALError会出现。这是完整的错误输出:

camera_1 | Hello World!
camera_1 | Traceback (most recent call last):
camera_1 |   File "main.py",line 19,in <module>
camera_1 |     main()
camera_1 |   File "main.py",line 12,in main
camera_1 |     cam = picamera.PiCamera()
camera_1 |   File "/usr/local/lib/python3.7/dist-packages/picamera/camera.py",line 367,in __init__
camera_1 |     with mo.MMALCameraInfo() as camera_info:
camera_1 |   File "/usr/local/lib/python3.7/dist-packages/picamera/mmalobj.py",line 2346,in __init__
camera_1 |     super(MMALCameraInfo,self).__init__()
camera_1 |   File "/usr/local/lib/python3.7/dist-packages/picamera/mmalobj.py",line 633,in __init__
camera_1 |     prefix="Failed to create MMAL component %s" % self.component_type)
camera_1 |   File "/usr/local/lib/python3.7/dist-packages/picamera/exc.py",line 184,in mmal_check
camera_1 |     raise PiCameraMMALError(status,prefix)
camera_1 | picamera.exc.PiCameraMMALError: Failed to create MMAL component b'vc.camera_info': I/O error
camera_1 | mmal: mmal_vc_shm_init: could not initialize vc shared memory service
camera_1 | mmal: mmal_vc_component_create: failed to initialise shm for 'vc.camera_info' (7:EIO)
camera_1 | mmal: mmal_component_create_core: could not create component 'vc.camera_info' (7)

这是什么问题?谢谢你的帮助!我很乐意提供更多信息:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)