gpt4 book ai didi

python - 使用 OpenCV Python 创建新的相机源(Camera Driver Using Python)

转载 作者:行者123 更新时间:2023-12-03 23:44:17 26 4
gpt4 key购买 nike

有谁知道使用python创建相机源的方法?例如,我有 2 个摄像头:

  • 网络摄像头
  • USB摄像头

  • 每当我使用任何需要摄像头的 Web 应用程序或界面时,我都可以选择从上述两个中选择摄像头源。
    我想要实现的是,我正在使用我自己的相机门户在我的 python 程序中处理实时帧,如下所示:
    import numpy as np
    import cv2

    while True:
    _,frame = self.cam.read()
    k = cv2.waitKey(1)
    if k & 0xFF == ord('q'):
    self.cam.release()
    cv2.destroyAllWindows()
    break
    else:
    cv2.imshow("Frame",frame)
    现在我想用这个 frame作为相机源,所以下次当我打开需要相机的软件或网络应用程序时,它会显示如下选项:
  • 网络摄像头
  • USB摄像头
  • Python Cam(或任何名称)

  • 有没有人对如何去做有任何建议或暗示?我见过一些生成自己的相机源的高级软件,但它们是用 C++ 编写的。我想知道这是否会在 python 中发生。
    这是一个相同的例子:
    enter image description here
    如您所见,那里有多个摄像机源。我想添加一个相机源,它在其提要中显示由 python 处理的帧。

    最佳答案

    您可以使用 v4l2环回 ( https://github.com/umlaeute/v4l2loopback )为此。它是用 C 编写的,但有一些 python 包装器。我用过虚拟视频 (https://github.com/Flashs/virtualvideo)。
    virtualvideo 自述文件非常简单,但这是我对其 github 示例的修改以符合您的目标:

    import virtualvideo
    import cv2


    class MyVideoSource(virtualvideo.VideoSource):
    def __init__(self):
    self.cam = cv2.VideoCapture(0)
    _, img = self.cam.read()
    size = img.shape
    #opencv's shape is y,x,channels
    self._size = (size[1],size[0])

    def img_size(self):
    return self._size

    def fps(self):
    return 30

    def generator(self):
    while True:
    _, img = self.cam.read()
    yield img


    vidsrc = MyVideoSource()
    fvd = virtualvideo.FakeVideoDevice()
    fvd.init_input(vidsrc)
    fvd.init_output(2, 640, 480, pix_fmt='yuyv422')
    fvd.run()
    初始化输出 第一个参数是我在添加内核模块时创建的虚拟相机资源:
    sudo modprobe v4l2loopback video_nr=2 exclusive_caps=1
    最后一个参数是我的网络摄像头大小和像素格式。
    您应该在环聊中看到此选项:
    hangoutOption

    关于python - 使用 OpenCV Python 创建新的相机源(Camera Driver Using Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63842434/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com