簡體   English   中英

python中的OpenCV。 獲取網絡攝像頭流有效,但會打印錯誤消息

[英]OpenCV in python. Getting webcam stream works, but error message is printed

我正在寫一些我需要網絡攝像頭流並對其進行一些面部檢測的東西。 一切正常,但我在終端中打印了一條錯誤消息,盡管我使用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) 。哦,我使用的是 python 2.7。

 import cv
 cv.CaptureFromCAM(-1)

有人可以告訴我如何解決這個問題嗎? 謝謝。

我遇到了相同的錯誤消息。 然而,在我的情況下,它們並不致命,只是表明 python 正在使用 v4l2 來探測碰巧對我的相機/操作系統組合無效的參數。

就我而言

>>> 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。 我在 beagleboneblack 上運行 Angstrom。

嘗試:

    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++)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM