猿问

尝试运行 VideoCapture(0) 时 OpenCV 冻结

我在玩 OpenCV。我正在关注文档示例(链接)


我在 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、pillow、open_cv等)

  • 使用 venv python


神不在的星期二
浏览 215回答 1
1回答

慕森王

您的代码中存在错误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,我记得在界面中看到了一个选项
随时随地看视频慕课网APP

相关分类

Python
我要回答