2

ウェブカメラストリームが必要なものを書いていて、顔検出を行っています。cv.CaptureFromCAM(-1)すべて正常に動作しますが、マシンに接続されているカメラを検出するために使用しているにもかかわらず、ターミナルにエラーメッセージが出力されます 。cv2の代わりにを使用しようとしましたcvが、同じエラーが発生します。

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

私が現在実行しているコードはcv.CaptureFromCAM(-1).Ohだけであり、Python2.7を使用していることに注意してください。

 import cv
 cv.CaptureFromCAM(-1)

誰かがこれを修正する方法を教えてもらえますか?ありがとう。

4

2 に答える 2

1

同じエラーメッセージが表示されました。ただし、私の場合、それらは致命的ではありません.pythonがv4l2を使用して、カメラとOSの組み合わせに対して無効なパラメーターをプローブしていることを示しています。

私の場合

>>> cap = cv2.VideoCapture(0)
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
...

しかし

ret, frame = cap.read()

ret=true とフレームの numpy 画像配列を指定します。

私の場合、ビデオ カメラは Logitech, Inc. HD Webcam C910 です。そして、ビーグルボーンブラックでオングストロームを実行しています。

于 2014-02-11T07:15:38.897 に答える
-1

試す:

    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)

また、cv2 と VideoCapture を使用:

from cv2 import *
cam = VideoCapture(0)   
s, img = cam.read()

編集: このエラーについてグーグルで調べているときに、次の情報が見つかりました: メッセージ: 'VIDIOC_QUERYMENU: 無効な引数' は opencv cap_libv4l.cpp ファイルから来ています。「querymenu.id」値には、メニュー項目を列挙するときに「V4L2_CTRL_FLAG_NEXT_CTRL」が設定されたままです。次のパッチはこれを解決します:

— 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++)
于 2013-02-19T13:47:04.297 に答える