首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV: cap.set(CAP_PROP_FRAME_WIDTH或CAP_PROP_FRAME_HEIGHT)和resize()之间的区别

OpenCV: cap.set(CAP_PROP_FRAME_WIDTH或CAP_PROP_FRAME_HEIGHT)和resize()之间的区别
EN

Stack Overflow用户
提问于 2022-03-18 05:33:09
回答 2查看 657关注 0票数 1

我正在研究OpenCV (4.3.0),并试图了解如何改变图像的分辨率。

据我所知,我有两种方法可以做到,

  1. 使用cap.set()函数 cap.set(CAP_PROP_FRAME_WIDTH,320);//设置视频cap.set的宽度(CAP_PROP_FRAME_HEIGHT,240);//设置视频的高度
  2. 使用"resize()“函数, int up_width = 600;int up_height = 400;Mat resized_up;调整大小(图像、resized_up、大小(up_width、up_height)、INTER_LINEAR);

我想知道他们是一样的还是不同的。他们之间的确切区别是什么?

EN

回答 2

Stack Overflow用户

发布于 2022-03-18 07:28:08

盖子意味着相机的能力。在从摄像机拍摄之前,我们设置了所需的分辨率。如果仅支持分辨率,则从摄像机中得到一个有效的帧。例如,一个网络摄像头可能支持一些固定数量的决议,如1280x720,640x480等,我们只能为这些决议设置摄像头。

调整大小是一种插值(双线性或双三次或任意一次)函数,它调整(上或下)帧的大小,以任意大小的。

票数 1
EN

Stack Overflow用户

发布于 2022-03-18 07:41:08

这里是你问题的答案之一。CAP_PROP_FRAME_WIDTHCAP_PROP_FRAME_HEIGHT是一些捕获属性。文件上说:

读写属性涉及许多层。一些意想不到的结果可能会发生在这条链上。有效的行为取决于设备硬件、驱动程序和API后端。

因此,如果您的相机后端与opencv支持的后端匹配,那么您将能够更改相机的分辨率(如果您的相机配置支持不同的分辨率)。例如,照相机可以同时支持640x480和1920x1080。如果opencv后端支持此摄像机后端,则可以通过代码切换分辨率配置:

代码语言:javascript
复制
cap.set(CAP_PROP_FRAME_WIDTH, 640);
cap.set(CAP_PROP_FRAME_HEIGHT, 480);

代码语言:javascript
复制
cap.set(CAP_PROP_FRAME_WIDTH, 1920);
cap.set(CAP_PROP_FRAME_HEIGHT, 1080);

调整尺寸呢?

调整大小()与我们前面讨论的概念完全不同。如果你使用640x480分辨率的相机,视频属性是基于硬件的。这意味着摄像机传感器为每个像素指定了感知器单元。然而,调整大小处理的结果图像通过上的软件。调整大小的是插值(操纵)图像的高度和宽度。换句话说,你看起来像是在看非常近的地方(放大)或非常远的地方(放大)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71522835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档