使用OpenCV Python创建新的相机源代码(使用Python的相机驱动程序)

使用OpenCV Python创建新的相机源代码(使用Python的相机驱动程序),python,opencv-python,Python,Opencv Python,有人知道使用python创建相机源代码的方法吗?例如,我有两个摄像头: 网络摄像头 USB摄像机 每当我使用任何需要摄像头的web应用程序或界面时,我都可以从上述两个选项中选择摄像头源 我想要实现的是,我在python程序中使用自己的摄像头门户处理实时帧,如下所示: import numpy as np import cv2 while True: _,frame = self.cam.read() k = cv2.waitKey(1)

有人知道使用python创建相机源代码的方法吗?例如,我有两个摄像头:

网络摄像头 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)
现在,我想将此帧用作相机源,因此下次每当我打开需要相机的软件或web应用程序时,它都会显示如下选项:

网络摄像头 USB摄像机 Python Cam或其他名称 有没有人对如何去做有什么建议或暗示?我见过一些高级软件,它们自己生成相机源,但是它们是用C++编写的。我想知道这是否会在python中发生

下面是一个相同的示例:


如你所见,这里有多个摄像机源。我想添加一个摄像头源,在其提要中显示python处理的帧。

首先,您需要获得可用摄像头的列表,可以找到相应的代码

然后,一旦选择了摄像头,就可以使用camera=cv2.VideoCaptureSelected\u端口,您可以使用v4l2loopback。它是用C编写的,但是有一些python包装器。我用过virtualvideo。 virtualvideo自述文件非常简单,但下面是我对其github示例的修改,以符合您的目标:

导入虚拟视频 进口cv2 类MyVideoSourcevirtualvideo.VideoSource: 定义初始自我: self.cam=cv2.VideoCapture0 _,img=self.cam.read 尺寸=img.shape opencv的形状是y、x和通道 自身大小=大小[1],大小[0] def img_尺寸自身: 返回自我。\u大小 自我定义: 返回30 def生成器自身: 尽管如此: _,img=self.cam.read 屈服强度 vidsrc=MyVideoSource fvd=虚拟视频设备 fvd.init_inputvidsrc fvd.init_输出2,640,480,pix_fmt='yuyv422' fvd.run 在init_输出中,第一个参数是我在添加内核模块时创建的虚拟相机资源:

sudo modprobe v4l2loopback video_nr=2 exclusive_caps=1
最后一个参数是我的网络摄像头大小和像素格式

您应该在悬挂区中看到此选项:


这回答了你的问题吗?嗨@Karthik,不,这是一个完全不同的问题。我不想从opencv打开两个凸轮。。。我想创建我自己的摄像头源,任何需要摄像头显示我的opencv处理过的帧的网络应用程序或软件都可以看到。哦,我看到你看起来像你自己的摄像头门户,你想将其嵌入某个地方,以准确显示处理过的帧。为了更清晰,我添加了一个图像截图。嗨,这不是我的目标。。。请再看看这个问题。。。我还有一些其他用途,我想创建自己的摄像头端口,而不是寻找可用的端口。sudo modprobe v4l2loopback video_nr=2独占_caps=1 windows的等效终端代码是什么?windows支持此库吗?此库仅适用于Linux。知道您在windows上,可能就是您一直在寻找的东西,我相信它与我向您展示的方法类似,但我不知道python集成是否可行。您还有其他解决方案,似乎不涉及创建内核模块。嗯,我明白了。。。非常感谢您的参考!