OpenCV 打開相機很簡單,VideoCapture類可以解決大部分問題:
import cv2
#打開usbcamera
cap = cv2.VideoCapture(0)
#打開網絡串流
cap = cv2.VideoCapture("rtsp://...")
#打開本地視頻
cap = cv2.VideoCapture("video.avi")
實際上這是因為OpenCV的將底層視頻庫封裝很完善,比如USB相機,在linux,打開一個USB camera大部分底層調用的是v4l2庫,而v4l2庫調用更加底層的uvc。
最近因為一個目標檢測項目需要用到高清攝像頭,而檢測移動目標,在抓拍瞬間需要解決motion blur的問題。
運動模糊一般通過減少快門時間來解決。故需要設置相機參數。
由於擔心OpenCV封裝之后很多參數hard code了,所以直接用V4L2或UVC查看、設置攝像機的參數:
V4L2:
apt-get install v4l2-utils
v4l2-ctl --list-devices
v4l2-ctl -d /dev/video0 --list-ctrls
UVC:
apt-get install uvcdynctrl
uvcdynctrl -d video0 -c
參考:
https://www.kurokesu.com/main/2016/01/16/manual-usb-camera-settings-in-linux/
https://www.linuxquestions.org/questions/linux-software-2/camera-settings-in-linux-v4l2-or-uvc-drivers-4175525260/
https://docs.opencv.org/4.1.0/d0/da7/videoio_overview.html