Python cv2.VideoCapture() 分辨率错误并读取裁剪图像

发布于 2025-01-10 19:58:50 字数 567 浏览 0 评论 0原文

我正在尝试使用 Python 和 OpenCV 通过以太网从插入我的笔记本电脑的 IDS GV-5240CP 相机读取图像。

这就是我应该得到的:

A 1280x1024 图像(此处调整大小以供上传)

但是使用这段代码:

import cv2

cap = cv2.VideoCapture(1)

_, frame = cap.read()

print(frame.shape)

cv2.imshow("Out", frame)

cv2.waitKey(2000)
cap.release()
cv2.destroyAllWindows()

cv2.imwrite('Test2.png', frame)

我得到:

A 640x480 裁剪image

如何将视频捕获设置为原始分辨率?

I'm trying to read images from an IDS GV-5240CP camera plugged to my laptop via ethernet using Python and OpenCV.

This is what I am supposed to get :

A 1280x1024 image (here resized for upload)

But using this code:

import cv2

cap = cv2.VideoCapture(1)

_, frame = cap.read()

print(frame.shape)

cv2.imshow("Out", frame)

cv2.waitKey(2000)
cap.release()
cv2.destroyAllWindows()

cv2.imwrite('Test2.png', frame)

I get:

A 640x480 cropped image

How can I set my video capture to the native resolution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

剧终人散尽 2025-01-17 19:58:50

VideoCapture 默认使用 640x480。

如果您想要不同的分辨率,请在构造函数中指定它或使用 set() 方法和 CAP_PROP_FRAME_WIDTH 等。文档中的详细信息。

cap = cv2.VideoCapture(1, apiPreference=cv2.CAP_ANY, params=[
    cv2.CAP_PROP_FRAME_WIDTH, 1280,
    cv2.CAP_PROP_FRAME_HEIGHT, 1024])

VideoCapture uses 640x480 by default.

If you want a different resolution, specify it in the constructor or use the set() method with CAP_PROP_FRAME_WIDTH and so on. Details in the docs.

cap = cv2.VideoCapture(1, apiPreference=cv2.CAP_ANY, params=[
    cv2.CAP_PROP_FRAME_WIDTH, 1280,
    cv2.CAP_PROP_FRAME_HEIGHT, 1024])
枕花眠 2025-01-17 19:58:50

out = cv2.VideoWriter(("E:", 'output.avi'), fourcc, 20.0, (640, 480))
尝试使用它并根据您的需要更改分辨率,
它会下载或使用
cv2.resize(frame,(w,h),fx=0,fy=0, interpolation = cv2.INTER_CUBIC)

因为您不想这样做,所以使用 OpenCV 中的 set() 模块来设置特定分辨率。 docs.opencv.org/4.x/d8/dfe/… 此链接提供有关 set() 的完整信息

out = cv2.VideoWriter(("E:", 'output.avi'), fourcc, 20.0, (640, 480))
try using this and change the resolution according to your need,
tho it will download or use
cv2.resize(frame,(w,h),fx=0,fy=0, interpolation = cv2.INTER_CUBIC)

since you don't want to do this then use set() module in OpenCV to set specific resolution. docs.opencv.org/4.x/d8/dfe/… this link for the full info about set()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文