OpenCV用黑色边栏捕捉imagem

2024-05-10 12:48:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用cv2.VideoCapture和16:9比例的相机捕捉照片和视频。但是所有的图像都是由OpenCV返回的,带有黑边,裁剪图像。在我的示例中,它不是返回1280 x 720的图像,而是返回960 x 720的图像。使用网络摄像头C920(1920x1080)时也会发生同样的情况。在

我做错什么了?在

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:

Image with black sides

使用Windows摄像机:

enter image description here


Tags: 图像网络示例视频videocv2frameopencv
3条回答

我也有同样的问题,但只在Windows10、OpenCV3.4和Python3.7上。 我在Mac操作系统上没有黑色边栏就可以得到完整的分辨率。在

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

@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网络摄像头C920上确认。在

我在windows摄像机中遇到了一个罗技广角相机的问题,我想知道一个驱动程序的问题。在

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

cv2.VideoCapture(cv2.CAP_DSHOW)

如果你有一个以上的相机,把索引加到这个值上

^{pr2}$

它将接受所需的分辨率通过应用正确的纵横比没有侧栏。在

相关问题 更多 >