【问题标题】:What happen if I set a smaller resolution in to a camera which has a constant resolution?如果我在具有恒定分辨率的相机中设置较小的分辨率会怎样?
【发布时间】:2020-04-15 23:13:26
【问题描述】:

我有一个 USB 摄像头,我知道它的分辨率为 1920x1080。

当我使用 opencv 的 VideoCapture 通过以下方式将分辨率设置为 1080x720 时

video_capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1080)
video_capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)

本质上发生了什么?

是直接从相机缓冲区中进行二次采样还是读取整个图像并调整为 1080x720?

如果直接从摄像头缓冲区中进行opencv子采样,那么应用这些设置会提高读取速度对吗?

如果 opencv 读取整个图像并将大小调整为 1080x720,那么应用这些设置会降低读取速度对吗?

应该属于什么样的情况?

【问题讨论】:

    标签: opencv camera


    【解决方案1】:

    我尝试将分辨率设置为不同的值

    import cv2
    
    cap = cv2.VideoCapture(0)
    w = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
    for i in range(1, 2000):
        cap.set(cv2.CAP_PROP_FRAME_WIDTH, int(i))
        if w != cap.get(cv2.CAP_PROP_FRAME_WIDTH):
            h = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
            w = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
            print(str(int(w)), str(int(h)))
    
    cap.release()
    cv2.destroyAllWindows()
    

    这是我得到的结果

    160 120
    320 240
    640 480
    848 480
    960 540
    1280 720
    

    由于我没有1920x1080选项,因此可以得出结论,cap.set属性只有在相机支持所需分辨率的情况下才能使用。

    请注意,调整大小操作在 OpenCV 中得到了很好的实现。因此,即使对于 Raspberry Pi 等功耗最低的计算机,与其他成像操作相比,调整大小所需的时间也可以忽略不计。 (例如,与高斯模糊不同,其计算时间在普通计算机中也是可以忽略的,但在 RPi 中该操作需要大量时间。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多