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

·  阅读 1208
【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)

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

篇篇精彩,尽请关注。

分类:
后端
标签:
分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改