v4l2 、UVC 设置摄像头、获取摄像头性能

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

posted on 2020-03-10 14:59  dinding  阅读(4757)  评论(0编辑  收藏  举报

导航