【问题标题】:How to get OpenCV to display entire camera frame?如何让 OpenCV 显示整个相机帧?
【发布时间】:2021-10-15 06:41:00
【问题描述】:

我在一个项目中使用了 180 度 FOV 鱼眼相机,我很难让 OpenCV 显示整个相机帧。当我在标准的 Windows 相机应用程序中打开相机时,它会显示完整的 180 度 FOV,但是当我使用简单的脚本在 Python 中显示相机时,它会裁剪出相当大的图像块并且几乎将 FOV 减半。

使用 Windows 相机应用的图像:https://ibb.co/WFK8Jm2

Python 脚本运行时的图像:https://ibb.co/QddnWXJ

下面是我正在使用的代码:

import cv2

cap = cv2.VideoCapture(0)


if not cap.isOpened():
    raise IOError("Cannot open webcam")

while True:
    ret, frame = cap.read()
    frame = cv2.resize(frame, (1500,1000), fx=0, fy=0, interpolation=cv2.INTER_AREA)
    cv2.imshow('Input', frame)

    c = cv2.waitKey(1)
    if c == 27:
        break

cap.release()
cv2.destroyAllWindows()

有人知道如何停止这种自动裁剪并显示全帧吗?调整窗口大小没有帮助。任何帮助将不胜感激!

【问题讨论】:

  • 您为什么认为“调整窗口大小”或致电 cv2.resize 会有所帮助?

标签: python opencv camera


【解决方案1】:

定义视频捕获后,打印这两个变量:

print(cap.get(cv.CAP_PROP_FRAME_WIDTH), cap.get(cv.CAP_PROP_FRAME_HEIGHT))

如果它打印默认的 OpenCV 值 640, 480,那么您可以使用 cap.set 方法将它们设置为相机的分辨率:

cap.set(cv.CAP_PROP_FRAME_WIDTH, camera_width)
cap.set(cv.CAP_PROP_FRAME_HEIGHT, camera_height)

【讨论】:

  • 非常感谢!!它现在工作正常,它成功了。无法告诉你我有多感激。
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多