如何使用 azure IOTEDGE 从 iotedge 模块访问相机模块

How can i access camera module from iotedge module using azure IOTEDGE

我在我的 docker 文件中使用以下代码进行视频流传输

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
#fourcc = cv.VideoWriter_fourcc(*'XVID')
total_frame=0
while cap.isOpened():
    ret, frame = cap.read()
    print(ret)
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
    #frame = cv.flip(frame, 0)

    #video_writer = cv2.VideoWriter(time_string, fourcc, 30.0, (1280, 720))
    # write the flipped frame


# Release everything if job is finished
cap.release()
#cv2.destroyAllWindows()

`

我正在使用这个 docker 文件来编写上面的代码

FROM ubuntu

# Install dependencies
RUN apt-get update && \
  apt-get install -yq \ 
    python3 \
    python3-pip \   
  && apt-get clean && rm -rf /var/lib/apt/lists/*


RUN pip3 install --upgrade pip 
RUN pip3 install imutils
RUN pip3 install azure-iot-device
RUN pip3 install opencv-contrib-python

WORKDIR /main/

COPY main .

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

我可以使用 docker 运行 --device /dev/video0 image 访问主机上的视频源 但是当我将它部署为 IOTEDGE 模块时我无法访问摄像头?请告诉我如何从 cv2.VideoCapture(0) 的 hostsystem.The 位置的 iotedge 模块访问视频源是 cv2.VideoCapture( '/dev/video0')

对于任何容器,包括 IoT Edge 模块,您需要将 /dev/videoX 公开给容器。对于 IoT Edge 模块,这是通过容器创建选项完成的。

在这里搜索 /dev/video0:https://kevinsaye.wordpress.com/2018/04/16/creating-an-opencv-module-for-iot-edge/ 看看它是如何完成的。