【问题标题】:OpenCV capturing image with black side barsOpenCV 捕获带有黑色边条的图像
【发布时间】:2019-02-02 05:58:50
【问题描述】:

我正在尝试使用 cv2.VideoCapture 和纵横比为 16:9 的相机拍摄照片和视频。 OpenCV返回的所有图像都有黑色侧边栏,裁剪图像。在我的示例中,它不是返回 1280 x 720 像素的图像,而是返回 960 x 720 的图像。 C920 网络摄像头 (1920 x 1080) 也会发生同样的情况。

我做错了什么?

import cv2

video = cv2.VideoCapture(0)
video.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
video.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)

while True:
    conected, frame = video.read()
    cv2.imshow("Video", frame)
    if cv2.waitKey(1) == ord('s'):
        video.release()
        break

cv2.destroyAllWindows()

使用 OpenCV:

使用 Windows 相机:

【问题讨论】:

  • 也许你应该将 OpenCV 版本升级到最新的 3 版
  • 我正在使用 OpenCV 3.4.2
  • 也许您的相机无法支持 1280x720,并非所有相机都能拍摄所有分辨率。
  • 当我使用 Sarxos 库或使用 Windows Camera 应用程序时,图像显示正确。
  • 我尝试更改订单,但没有成功

标签: python opencv


【解决方案1】:

@luismesas 的答案是完全正确的,对我有用。

但是对于像我这样不熟练的人,您需要保存 cv2.VideoCapture 返回的捕获。它不是你可以像 cv2.VideoCapture(cv2.CAP_DSHOW) 那样设置的参数,它是一种方法。

camera_index = 0
cap = cv2.VideoCapture(camera_index, cv2.CAP_DSHOW)
ret, frame = cap.read()

在网络摄像头设备 HD PRO WEBCAM C920 上确认。

【讨论】:

    【解决方案2】:

    我在 Windows 摄像头中使用 Logitech 广角时遇到了这个确切的问题,我想知道驱动程序问题。

    所以我使用 DirectShow 驱动程序而不是使用本机驱动程序解决了这个问题:

    cv2.VideoCapture(cv2.CAP_DSHOW)
    

    如果您有多个摄像头,请像这样将索引添加到该值

    cv2.VideoCapture(cv2.CAP_DSHOW + camera_index)
    

    它将通过应用正确的纵横比而不具有侧边栏来接受所需的分辨率。

    【讨论】:

    • 另一种方法是:cv2.VideoCapture(camera_index, cv2.CAP_DSHOW)
    • 当我尝试双参数版本时,我得到TypeError: VideoCapture() takes at most 1 argument (2 given)
    【解决方案3】:

    我也遇到了同样的问题,但仅限于 Windows 10、OpenCV 3.4 和 Python 3.7。 我在 Mac OS 上获得了没有黑色边条的完整分辨率。

    我使用PyGame 捕获网络摄像头输入,并在 Windows 上获得了 1920x1080 的全分辨率。

    【讨论】:

      【解决方案4】:

      只需调整接收帧的大小:

         cv::Mat dst;
         cv:resize(frame,dst,cv::Size(1280,720));
         cv::imshow("Video",dst);
      

      检查一下!

      【讨论】:

      • 这只会扭曲图像以填充尺寸,但仍无法捕获更宽视野中的信息。
      猜你喜欢
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多