[英]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.