我正在嘗試使用 opencv 從筆記本電腦(或外部 USB 攝像頭)上的內置網路攝像頭捕獲視頻,特別是帶有 DSHOW 引數的 VideoCapture。我知道有一種方法可以設定解析度甚至 FPS,但是當我將它包含在代碼中時,API 的 DirectShow 引數不回傳任何值。
例如;
# returns my webcam's stream, but all optional arguments are ignored
camera = cv2.VideoCapture(0)
camera = cv2.VideoCapture(0, cv2.CAP_V4L2)
# returns none and loops infinitely or errors out when *if im.any()*
camera = cv2.VideoCapture(0, cv2.CAP_DSHOW)
這是上面之后的代碼;
# should set resolution, settings are always ignored
camera.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
while(True):
retval, im = camera.read()
if im.any(): # errors out when image is none
cv2.imshow("image", im)
k = cv2.waitKey(33)
if k==27: # Esc key press
print('Resolution: {0}x and {1}y'.format(im.shape[1],im.shape[0]))
print('FPS: {0}'.format(camera.get(cv2.CAP_PROP_FPS)))
break
camera.release()
cv2.destroyAllWindows()
DSHOW 是要使用的正確 API,它是唯一可以使用 opencv 更改相機流的解析度和 FPS 的 API 嗎?還是我做錯了什么?
有關系統的更多詳細資訊。
- Ubuntu 18.04.6
- 蟒蛇 3.9.5
- opencv-python 4.5.2.52
預先感謝您的幫助!
問候, 蒂茲
uj5u.com熱心網友回復:
DSHOW(和 MSMF)只是視窗。
在 linux 上,使用 V4L、FFMPEG 或 GS??TREAMER
另外,請檢查capture.set() 的回傳值,并非任何給定機器都支持所有屬性/值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/313189.html
標籤:opencv 流媒体 ubuntu-18.04 python-3.9
