OpenCV的VideoCapture类的get、set参数列表

首先先看OpenCV4.1官方中文手册P32,关于VideoCapture的set和get的说明,如图1所示。说明了19个参数都是可读的,但部分参数可写。具体关于它们的读写我没有仔细深究,在表1注出了我所知的它们读写属性。

图1
图1
参数名称 值 说明 读/写 CV.CAP_PROP_POS_MSEC 0 当前视频文件的时间位置(返回毫秒)或视频捕获时间戳 Y/ CV.CAP_PROP_POS_FRAMES 1 从0开始的解码/捕获时间帧 Y/ CV.CAP_PROP_POS_AVI_RATIO 2 返回视频文件的相关位置:0,视频开始。1,视频结束 Y/ CV.CAP_PROP_FRAME_WIDTH 3 视频流中的帧宽 Y/Y CV.CAP_PROP_FRAME_HEIGHT 4 视频流中的帧高 Y/Y CV.CAP_PROP_FPS 5 帧率 Y/Y CV.CAP_PROP_FOURCC 6 返回解码方式中的四字符 Y/Y CV.CAP_PROP_FRAME_COUNT 7 视频文件的总帧数 Y/ CV.CAP_PROP_FORMAT 8 由retrieve()函数返回的矩阵对象的格式 Y/ CV.CAP_PROP_MODE 9 用于预测当前捕获模式的后端专用值 Y/ CV.CAP_PROP_BRIGHTNESS 10 图像的亮度(仅用于摄像头) Y/Y CV.CAP_PROP_CONTRAST 11 图像的对比度(仅用于摄像头) Y/Y CV.CAP_PROP_SATURATION 12 图像的饱和度(仅用于摄像头) Y/Y CV.CAP_PROP_HUE 13 图像的色调(仅用于摄像头) Y/Y CV.CAP_PROP_GAIN 14 图像增益(仅用于摄像头) Y/Y CV.CAP_PROP_EXPOSURE 15 曝光度(仅用于摄像头) Y/Y CV.CAP_PROP_CONVERT_RGB 16 用于预测图像是否应该被转换为RGB的布尔位 Y/ CV.CAP_PROP_WHITE_BALANCE 17 白平衡(当前不支持) Y/ CV.CAP_PROP_RECTIFICATION 18 立体相机的纠正位 Y/
表1 get的参数列表

下面的代码,是已经跑通的Python代码。Python版本为3.7,OpenCV版本为4.5,在树莓派4B的linux系统上执行正常。

import cv2 as cv

#打开摄像头
image = cv.VideoCapture(0)                           
#图像宽度
image.set(3,600)
image.set(cv.CAP_PROP_FRAME_WIDTH,600)
#图像高度
image.set(4,500)
image.set(cv.CAP_PROP_FRAME_HEIGHT,500)
#视频帧率
image.set(5, 30)  #设置帧率
image.set(cv.CAP_PROP_FPS, 30)
#解码方式四字符
image.set(cv.CAP_PROP_FOURCC, cv.VideoWriter.fourcc(M, J, P, G))
#图像亮度
image.set(cv.CAP_PROP_BRIGHTNESS, 63) #设置亮度 -64 - 64  0.0
#图像对比度
image.set(cv.CAP_PROP_CONTRAST, 0)   #设置对比度 -64 - 64  2.0
#图像曝光度
image.set(cv.CAP_PROP_EXPOSURE, 2000)  #设置曝光值 1.0 - 5000  156.0

while (image.isOpened()):
    #逐帧捕获
    ret, frame = image.read()
    #显示图像
    cv.imshow("real_time",frame)
    #等待按键ESC按下
    if(cv.waitKey(5) == 27):
        break

#释放摄像头
image.release()
#关闭所有该程序打开的窗口
cv.destroyAllWindows()

图2为执行结果,图像是实时刷新显示。

图2 运行结果截图
图2 运行结果截图
经验分享 程序员 微信小程序 职场和发展