【问题标题】:OpenCV freezes while trying to run VideoCapture(0)OpenCV 在尝试运行 VideoCapture(0) 时冻结
【发布时间】:2019-08-23 21:39:08
【问题描述】:

我正在玩 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、pillow、open_cv等)
  • 使用 venv python

【问题讨论】:

  • 嗨,Georgy,我一直在尝试理解它为什么会冻结,但我发现了一些东西。我不明白,但我确实打开了框架窗口。这就是我所做的:启动我的网络摄像头 (GTK) 并运行我的 python 文件。正如预期的那样,它冻结在VideoCapture(0) 我关闭了网络摄像头和框架,显示了一张图片(我猜是关闭之前的最后一张)。我的印象是网络摄像头提要会连续出现在框架中,直到按下“q”键......在网络摄像头关闭之前不是图片?我误会了什么?
  • 嗨,Shawn,这是 OP 中提供的代码。谢谢!

标签: python opencv video-capture


【解决方案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,我记得在界面中看到了一个选项

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    相关资源
    最近更新 更多