Python 无法在Ubuntu 16.04(主机)上的OpenCV中使用集成网络摄像头

Python 无法在Ubuntu 16.04(主机)上的OpenCV中使用集成网络摄像头,python,opencv,webcam,opencv3.0,Python,Opencv,Webcam,Opencv3.0,Ubuntu 16.04上OpenCV中的集成网络摄像头抛出了以下错误。我用另一个程序检查了cheese,它显示的是静态图像和视频,因此这里的问题似乎不是相机本身 我用来测试这一点的代码: import cv2 import numpy as np import time cam = cv2.VideoCapture(2) if not cam.isOpened(): print('Cannot open camera') while

Ubuntu 16.04上OpenCV中的集成网络摄像头抛出了以下错误。我用另一个程序检查了cheese,它显示的是静态图像和视频,因此这里的问题似乎不是相机本身

我用来测试这一点的代码:

    import cv2
    import numpy as np
    import time
    cam = cv2.VideoCapture(2)
    if not cam.isOpened():
     print('Cannot open camera')

    while True:
     ret,frame = cam.read()
     cv2.imshow('webcam', frame)
     if cv2.waitKey(1)&0xFF == ord('q'):
      break

   cam.release()
   cv2.destroyAllWindows()
错误:

无法打开相机(如果不是cam.Ispened():,则来自
处脚本的反馈)

OpenCV错误:在imshow文件/io/OpenCV/modules/highgui/src/window.cpp的第325行,断言失败(size.width>0&&size.height>0)

回溯(最近一次呼叫最后一次): 文件“Video_test.py”,第13行,在 cv2.imshow(“网络摄像头”,画面) cv2.error:/io/opencv/modules/highgui/src/window.cpp:325:error:(-215)函数imshow中的size.width>0和size.height>0


任何帮助都将不胜感激。谢谢

使用
cam.open()
尝试以下操作:


您还可以使用
cam=cv2.VideoCapture(值)
value。。现在设置为2。尝试一个范围。1-10.

@Yashaswini Bhat。见下面我的答案。请完成SO之旅,赢取第一批;-)您是否尝试过视频捕获(0)
或视频捕获(1)@Mike。。。你说对了一半。Yashaswini发布了回溯错误。这在张贴的*永久性修复中没有说明。。。链接您提供了链接:-)另一件尚未提及的事情:如果您在linux/osx上使用
pip install opencv
opencv contrib
安装opencv,则由于ffmpeg支持,它不会使用视频支持进行编译。要解决这个问题,您通常必须从源代码构建。(另请参见)我不能100%确定
VideoCapture
是否属于这一类。@user1767754我已经尝试过了,但同样的问题仍然存在。我也会尝试
VideoCapture(0)
,因为如果网络摄像头是唯一可用的摄像头,则默认为网络摄像头(“如果连接了单个摄像头,只需传递0即可”。)
import cv2
import numpy as np
import time

cam = cv2.VideoCapture(2)  # camera index (default = 0) (added based on Randyr's comment).

print 'cam has image : %s' % cam.read()[0] # True = got image captured. 
                                           # False = no pics for you to shoot at.

# Lets check start/open your cam!
if cam.read() == False:
    cam.open()

if not cam.isOpened():
    print('Cannot open camera')

while True:
    ret,frame = cam.read()
    cv2.imshow('webcam', frame)
    if cv2.waitKey(1)&0xFF == ord('q'):
        break

cam.release()
cv2.destroyAllWindows()