簡體   English   中英

是否可以使用 cv2.Videocapture 訪問 Ubuntu 18.04 上大於 7 索引的視頻設備?

[英]Is it possible to use cv2.Videocapture to access video devices greater than 7 index on Ubuntu 18.04?

Currently trying to simultaneously capturing 10 images with 10 usb cameras connected to a Raspberry Pi 4 (through board USB ports and usb hub) with Ubuntu 18.04 installed. 我正在使用多線程方法來創建多個將捕獲照片的相機對象。 我目前有 4 個攝像頭工作(這上升到 /dev/video7,每個物理攝像頭占用 2 個設備索引。

我目前遇到的問題是訪問任何大於 7 索引的相機設備(將無法訪問 5 或更高的物理相機)。 我目前收到以下錯誤:

“視頻錯誤:V4L:索引 8 不正確!”

它與位於 modules/videoio/src/cap_v4l.cpp 的 opencv_3.4.1 源文件相關聯。 在這個源文件中,它提到它已針對多達 8 個輸入進行了測試,是否有人設法獲得超過 8 個輸入設備來使用 Raspberry Pi 拍攝照片?

我還將添加一些我已經嘗試過的調試信息。

  • 將 #define MAX_CAMERAS 8(位於 cap_v4l.cpp 中)更改為更大的值並重建 opencv 模塊,但沒有任何影響。
  • 我也嘗試過自己訪問設備索引大於 7 的任何相機,但它仍然存在。
  • 我設法使用 ROS melodic 上的 usb_cam 訪問這些攝像頭,因此它們可以正常工作和連接。 如果可能的話,我更願意通過 opencv-python 來完成這項工作,但如果沒有解決方案,我將探索一種 ROS 方法來解決該任務。

任何幫助或建議表示贊賞,謝謝。

經過無休止的調試,我找到了一種解決方法,該方法允許我使用索引高於 7 的相機捕獲圖像。在下面的第一行代碼中創建 VideoCapture() object 后,這會導致 VIDEOIO ERROR 仍然發生。 在此之后,我檢查相機是否正確打開,如果沒有,我繼續打開相機,然后再工作。

    self.cam = cv2.VideoCapture(camID)
    if(self.cam.isOpened() is False):
        self.cam.open("/dev/video" + str(camID))

暫無
暫無

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

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