尝试运行VideoCapture(0)

时间:2019-04-02 14:07:21

标签: python opencv video-capture

我正在玩OpenCV。我正在遵循文档示例(link

我在Ubuntu上安装了GTK网络摄像头应用程序,以验证我的网络摄像头是否正常工作。我可以启动网络摄像头,并在GTK中查看视频反馈。

我在教程代码中添加了一些打印消息,以查看获得的地方。 我在此行之前和之后添加了打印:cap = cv2.VideoCapture(0)

运行Python文件时,我得到的只是我在cap = cv2.VideoCapture(0)之前添加的打印内容。

我尝试将waitKey增加到20、40、100,但这没有帮助。

有人知道为什么它不会进一步显示框架吗?

我的代码:

import numpy as np 
import cv2 

videoFeed = cv2.VideoCapture(0) 
while (True): 
    ret, frame = videoFeed.read() 
    frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    cv2.imshow('Feed', frame_gray) 
    if cv2.waitKey(10) & 0xFF = ord("q"): 
        break 
videoFeed.release() 
cv2.destroyAllWindows() 

我的设置:

  • Windows 10主机
  • Ubuntu 18.04来宾主机
  • 集成网络摄像头
  • 使用PIP安装python模块(numpy,scipi,枕头,open_cv等)
  • 使用venv python

1 个答案:

答案 0 :(得分:0)

您在if cv2.waitKey(10) & 0xFF = ord("q"):中的代码中有一个错误。不过您应该在这里遇到语法错误。

import numpy as np 
import cv2 

videoFeed = cv2.VideoCapture(0) 
while (True): 
    ret, frame = videoFeed.read()
    if ret == False:
        print("Failed to retrieve frame")
        break 
    frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    cv2.imshow('Feed', frame_gray) 
    if cv2.waitKey(10) & 0xFF == ord("q"): 
        break 
videoFeed.release() 
cv2.destroyAllWindows() 

测试了您的代码。工作良好。唯一的建议是检查您的Ubuntu来宾是否有权访问您的网络摄像头。如果您使用的是VirtualBox,我记得在界面中看到了一个选项