擅长:python、mysql、java
<p>尝试:</p>
<pre><code> import cv
cv.NamedWindow("Capture", 1)
cap_1 = cv.CaptureFromCAM(-1)
While True:
Frame = cv.QueryFrame(cap_1)
cv.ShowImage("Capture", Frame)
cv.WaitKey(1)
</code></pre>
<p>此外,使用cv2和视频捕获:</p>
<pre><code>from cv2 import *
cam = VideoCapture(0)
s, img = cam.read()
</code></pre>
<p>编辑:我在搜索这个错误时发现了以下信息:
消息:“VIDIOC_QUERYMENU:Invalid argument”来自opencv cap_libv4l.cpp
文件。
“querymenu.id”值在枚举时仍设置有“V4L2_CTRL_FLAG_NEXT_CTRL”
菜单项。
下面的补丁解决了这个问题:</p>
<pre><code>— OpenCV-2.3.1/modules/highgui/src/cap_libv4l.cpp 2011-09-12 20:41:29.000000000 +0200
+++ opencv/modules/highgui/src/cap_libv4l.cpp 2011-12-01 19:00:37.503761631 +0100
@@ -489,7 +489,7 @@
{
// printf (” Menu items:\n”);
CLEAR (capture->querymenu);
- capture->querymenu.id = capture->queryctrl.id;
+ capture->querymenu.id = capture->queryctrl.id & ~V4L2_CTRL_FLAG_NEXT_CTRL;
for (capture->querymenu.index = capture->queryctrl.minimum;
(int)capture->querymenu.index queryctrl.maximum;
capture->querymenu.index++)
</code></pre>