使用opencv将模拟视频抓取到python中

使用opencv将模拟视频抓取到python中,python,opencv,video,Python,Opencv,Video,看来我的问题以前被问过很多次,不幸的是,没有人回答。我希望有人能帮忙 我有一个Easycap设备,可以通过USB端口将模拟摄像机的模拟图像转换为数字信号 该设备在设备管理器中的“声音、视频和游戏控制器”类别下标识为“SMI抓取设备” 我使用一个简单的Python代码来显示这个设备的视频。我的笔记本电脑里还有一个嵌入式网络摄像头 import numpy as np import cv2 cap = cv2.VideoCapture(0) while(True): # Capture f

看来我的问题以前被问过很多次,不幸的是,没有人回答。我希望有人能帮忙

我有一个Easycap设备,可以通过USB端口将模拟摄像机的模拟图像转换为数字信号

该设备在设备管理器中的“声音、视频和游戏控制器”类别下标识为“SMI抓取设备”

我使用一个简单的Python代码来显示这个设备的视频。我的笔记本电脑里还有一个嵌入式网络摄像头

import numpy as np
import cv2
cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Display the resulting frame
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    if cv2.waitKey(1) & 0xFF == ord('s'):
        cv2.imwrite('screenshot.jpg',frame)



# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
首先,当我拔下Easycap时,CaptureVideo(0)返回嵌入式网络摄像头视频流。但是,当我插入Easycap时,会出现一个错误:

“回溯(最近一次呼叫最后一次): 文件“C:\Users\DELL\Desktop\code\cam.py”,第10行,在 cv2.imshow(“帧”,帧) 错误:…\src\opencv\modules\highgui\src\window.cpp:261:错误:(-215)size.width>0&&size.height>0“

请注意,除0之外的任何数字都会使程序显示网络摄像头图像。因此,如果我尝试
cap=cv2.CaptureVideo(1)
,它将显示网络摄像头,
cap=cv2.CaptureVideo(20)
是相同的

我还尝试在
VideoCapture
构造函数中输入“SMI抓取器设备”,而不是0或1,但没有任何区别

我使用的是Windows 8,我已经为Easycap安装了附带的驱动程序。驱动程序附带的软件(称为ULead)工作正常,可以显示CCTV摄像机视频。我试图在关闭该程序时显示图像,没有,结果是一样的

我以前使用过一个C#程序,该程序带有一个RGE库,该库具有
getCamList
方法,或者允许我从组合框中选择要显示的特定设备。我找不到类似的函数是opencv

我正在使用OpenCV 2.4.6。我没有在以前的版本上尝试代码

我真的需要理解为什么这段代码不起作用,因为我只是opencv和图像处理的初学者

我希望有人能帮上忙。

有光吧

严肃地说,我也遇到了同样的问题,我希望这能有所帮助

让光明来吧

严肃地说,我也遇到了同样的问题,我希望这能有所帮助

让光明来吧

严肃地说,我也遇到了同样的问题,我希望这能有所帮助

让光明来吧

严肃地说,我也遇到了同样的问题,我希望这能有所帮助

我也在使用EasyCAP。 您必须检查ret是否为真

我正在使用下面的代码

   while True:
      ret, frame = vc.read()
      if ret:
         break
      cv2.waitKey(10)
   h, w = frame.shape[:2]
   print h, w

   while True:
      ret, frame = vc.read()
      if ret:
         cv2.imshow(WID, frame)
      if cv2.waitKey(1) == 27:
        break
我也在使用EasyCAP。 您必须检查ret是否为真

我正在使用下面的代码

   while True:
      ret, frame = vc.read()
      if ret:
         break
      cv2.waitKey(10)
   h, w = frame.shape[:2]
   print h, w

   while True:
      ret, frame = vc.read()
      if ret:
         cv2.imshow(WID, frame)
      if cv2.waitKey(1) == 27:
        break
我也在使用EasyCAP。 您必须检查ret是否为真

我正在使用下面的代码

   while True:
      ret, frame = vc.read()
      if ret:
         break
      cv2.waitKey(10)
   h, w = frame.shape[:2]
   print h, w

   while True:
      ret, frame = vc.read()
      if ret:
         cv2.imshow(WID, frame)
      if cv2.waitKey(1) == 27:
        break
我也在使用EasyCAP。 您必须检查ret是否为真

我正在使用下面的代码

   while True:
      ret, frame = vc.read()
      if ret:
         break
      cv2.waitKey(10)
   h, w = frame.shape[:2]
   print h, w

   while True:
      ret, frame = vc.read()
      if ret:
         cv2.imshow(WID, frame)
      if cv2.waitKey(1) == 27:
        break

经过更多的研究,这似乎是一个opencv错误。你能解决你的问题/修复错误吗?经过更多的研究,它似乎是一个opencv错误。你能解决你的问题/修复错误吗?经过更多的研究,它似乎是一个opencv错误。你能解决你的问题/修复错误吗?经过更多的研究,它似乎是一个opencv错误。你能解决你的问题/修复错误吗?