簡體   English   中英

OpenCV - QueryFrame()從網絡攝像頭返回舊圖像

[英]OpenCV - QueryFrame() returns older image from the webcam

我試圖使用OpenCV從網絡攝像頭抓取一個幀。 但是QueryFrame()返回的圖像比當前幀要早得多。 它需要多次QueryFrame()調用才能獲得最新的圖像,但即使距離預期的當前圖像也要滯后2到3秒。 我嘗試使用不同的網絡攝像頭,但結果是相同的。 我嘗試了cv2中的read()方法並遇到了同樣的問題。 有沒有辦法解決這個問題,並使用OpenCV從網絡攝像頭獲取當前幀?

網絡攝像頭具有30fps,640/480分辨率。 操作系統:Ubuntu 12.04,OpenCV 2.4.9

# CV code
import cv
capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)
cv.SaveImage("test2.JPG", img)


# CV2 code
import cv2
cam = cv2.VideoCapture()
cam.open(-1)
img=cam.read()
cv2.imwrite("test3.jpg",img[1])

為我解決問題的一個方法就是在需要快速拍攝並立即釋放時獲取網絡攝像頭訪問權限。

def getframe(name):  
  cam.open(0)
  img=cam.read()
  cv2.imwrite(str(name)+".jpg",img[1])
  cam.release() 

暫無
暫無

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

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