我正在使用下面的代码访问我的网络摄像头使用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)
我相信你需要
以循环方式连续更新窗口中显示的图像。也就是说,来自
cv.QueryFrame
的帧是静态图像,而不是连续视频。如果您想通过按键退出,也可以在循环中使用小超时来测试
cv.WaitKey
。哇,我发了这个帖子后15分钟就回答了我自己的问题。我做了一些研究,为什么网络摄像头只抓取一个图像是因为。。。
这不允许刷新窗口内容。我把数字设为10。。。
而且效果很好。我也试了100次,但没发现有什么不同。我只在数字是1000的时候看到了不同。我用1是因为它看起来运行最平稳。
这是显示网络摄像头源的完整代码
对我来说,根目录中的命令
xhost+
节省我的时间,注意关闭和打开新的终端。
再见。
相关问题 更多 >
编程相关推荐