【Python3-OpenCV】设置摄像头分辨率

这是我参与更文挑战的第21天,活动详情查看: 更文挑战

OpenCV是一个C++库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python中常使用OpenCV库实现图像处理。

image.png

本文将介绍如何在Python3中使用OpenCV设置摄像头分辨率。

设置摄像头分辨率

通常在Python3中调用Opencv时,在创建完 VideoCapture 对象并成功打开摄像头后,可以使用函数 video.get(propId) 来获得视频的一些参数信息。

这里propId 可以是 0 18 之间的任何整数。每一个数代表视频的一个属性,详情可以见下表。

方法 解释
cv2.VideoCapture.get(0) 视频文件的当前位置(播放)以毫秒为单位
cv2.VideoCapture.get(1) 基于以0开始的被捕获或解码的帧索引
cv2.VideoCapture.get(2) 视频文件的相对位置(播放):0=电影开始,1=影片的结尾。
cv2.VideoCapture.get(3) 在视频流的帧的宽度
cv2.VideoCapture.get(4) 在视频流的帧的高度
cv2.VideoCapture.get(5) 帧速率
cv2.VideoCapture.get(6) 编解码的4字-字符代码
cv2.VideoCapture.get(7) 视频文件中的帧数
cv2.VideoCapture.get(8) 返回对象的格式
cv2.VideoCapture.get(9) 返回后端特定的值,该值指示当前捕获模式
cv2.VideoCapture.get(10) 图像的亮度(仅适用于照相机)
cv2.VideoCapture.get(11) 图像的对比度(仅适用于照相机)
cv2.VideoCapture.get(12) 图像的饱和度(仅适用于照相机)
cv2.VideoCapture.get(13) 色调图像(仅适用于照相机)
cv2.VideoCapture.get(14) 图像增益(仅适用于照相机)(Gain在摄影中表示白平衡提升)
cv2.VideoCapture.get(15) 曝光(仅适用于照相机)
cv2.VideoCapture.get(16) 指示是否应将图像转换为RGB布尔标志
cv2.VideoCapture.get(17) × 暂时不支持
cv2.VideoCapture.get(18) 立体摄像机的矫正标注(目前只有DC1394 v.2.x后端支持这个功能)

get方法对应的就是set方法,因此其中的一些值可以使用video.set(propId, value) 来修改。

value 就是你想要设置成的新值。

查看摄像头的分辨率可以使用 video.shape 函数,其中前两个值分别是高、宽值。

默认情况下,摄像头的分辨率的为:640X480,我们可以使用set方法对其修改。

如改为320X240:

video.set(3, 320), video(4, 240)。
复制代码

代码案例

下面是一个设置摄像头分辨率的案例:

import cv2

if __name__ == "__main__":
    webcam = cv2.VideoCapture(0)
    
    if not webcam.isOpened():
        print("can't open the camera!!!")
    # cv2.namedWindow("video", 0)
    # cv2.resizeWindow("video", 960, 720)
    # method 1:
    webcam.set(3, 1920)  # width=1920
    webcam.set(4, 1080)  # height=1080
    # method 2:
    # webcam.set(cv2.CAP_PROP_FRAME_WIDTH, 960)
    # webcam.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
    while True:
        ret, frame = webcam.read()
        print(frame.shape[:2])  # just need the first two values.
        cv2.imshow("video", frame)
        # Hit 'q' on the keyboard to quit!
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    # Release handle to the webcam
    webcam.release()
    cv2.destroyAllWindows()
复制代码

以下方法可以用来改变窗口的显示大小,但是不等于摄像头的分辨率。

cv2.namedWindow("video", 0)
cv2.resizeWindow("video", 960, 720)
复制代码

本月将陆续推出相关系列文章,

篇篇精彩,尽请关注。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享