0
我想通過linux上的opencv獲取Minoru立體攝像頭的圖像對。 當我強迫低分辨率它工作正常:Opencv立體攝像頭捕獲和幀率限制
left = cv2.VideoCapture(0)
left.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 320)
left.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 240)
right = cv2.VideoCapture(0)
right.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 320)
right.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 240)
while True:
_, left_img = left.read()
_, right_img = right.read()
...
不過,我使用的圖像創建深度圖,和更大的分辨率將是一件好事。但如果我嘗試保留默認,或迫使分辨率爲640x480,我擊球失誤:
libv4l2:在流轉彎錯誤:設備上沒有剩餘空間
我看了一下USB帶寬侷限性,但:
- 這發生在(右起第一次讀())第一次迭代
- 我不需要任何接近60甚至30 FPS,但未能成功地減少了「請求FPS」通過VideoCapture參與(如果這是有道理的)
- 加入睡覺似乎沒有幫助,甚至在左/右之間讀取
- 奇怪的是,如果我做了很多處理(在while循環中),我開始注意到「lag」:事物在現實世界中發生的事情會在閱讀過的圖片後顯示很久。這表明,實際上有一個緩衝的地方,可以和確實積累幾個圖像(很多)
我試圖創建和釋放爲每個圖像讀取單獨VideoCapture的解決方法,但這是慢了一點總體而言(< 1FPS),更重要的是,圖像在進行立體匹配時太多不同步。
我試圖理解爲什麼這會失敗,爲了找到解決辦法。看起來v4l正在分配一個單獨的全局太小的緩衝區,以某種方式被2個捕獲對象使用。 任何幫助,將不勝感激。