繁体   English   中英

在python + openCV中使用网络摄像头的问题

[英]Problems using webcam in python + openCV

我使用以下代码使用openCV + python访问我的网络摄像头...

import cv

cv.NamedWindow('webcam_feed', cv.CV_WINDOW_AUTOSIZE)

cam = cv.CaptureFromCAM(-1)

然后我在控制台中收到以下错误...

VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument

我原来是用的,

cv.CaptureFromCAM(0)

访问相同并具有相同的问题并使用-1,因为它假设选择任何网络摄像头。

我还测试了看Ubuntu是否识别网络摄像头,它确实如此。 我正在使用v4l2进行网络摄像头。

{编辑}

我使用以下代码来显示视频输入,它似乎只显示网络摄像头捕获的一个图像而不是连续的视频输入...

import cv
cv.NamedWindow('webcam_feed', cv.CV_WINDOW_AUTOSIZE)
cam = cv.CaptureFromCAM(-1)
feed = cv.QueryFrame(cam)
cv.ShowImage("webcam_feed", feed)
cv.WaitKey(-1)

WOW,在我发布之后,在15年回答了我自己的问题。 我做了一些研究,网络摄像头只抓取一个图像的原因是因为......

cv.WaitKey(-1)

这不允许刷新窗口的内容。 我将数字设置为10 ......

cv.WaitKey(10)

它工作得很漂亮。 我也尝试了100,但没有看到任何区别。 当数字为1000时,我只看到了差异。我使用1,因为它似乎运行最顺畅。

以下是显示网络摄像头Feed的完整代码

import cv

cv.NamedWindow("webcam", 1)

cam = cv.CaptureFromCAM(-1)

While True:
feed = cv.QueryFrame(cam)
cv.ShowImage("webcam", feed)
cv.WaitKey(1)

我相信你需要投入

frame = cv.QueryFrame(cam)
cv.ShowImage("Webcam Feed", frame)

在循环中不断更新窗口中显示的图像。 也就是说,来自cv.QueryFrame的帧是静态图像,而不是连续视频。

如果您希望能够通过按键退出,请在循环中使用小超时测试cv.WaitKey

对我来说,root中的命令

xhost +

节省我的时间,注意关闭并打开新终端。

再见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM