我试图以完全相同的大小显示捕获。我试过这个:
// in the class.h
cv::Mat frame;
cv::VideoCapture capture;
我现在尝试了几种解决方案。
数字 1:大小根本没有变化。
this->capture.open(0);
or
this->capture.open(filename);
this->capture.set(CV_CAP_PROP_FRAME_WIDTH, 800);
this->capture.set(CV_CAP_PROP_FRAME_HEIGHT, 600);
2号:例外。
this->capture.open(0);
or
this->capture.open(filename);
this->capture.read(this->frame);
if (!this->frame.empty())
cv::resize(this->frame, this->frame, cv::Size(800, 600));
第三个:例外。
this->capture.open(0);
or
this->capture.open(filename);
cv::resize(this->frame, this->frame, cv::Size(800, 600));
this->capture.read(this->frame);
这些都不起作用。知道如何正确调整它的大小吗?
原文由 Romain 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于函数
capture.set()
只有某些选项适用于某些输入格式。这意味着例如您不能为电影文件设置 FPS,但您可以跳到某个帧。另一方面,在相机输入上,您可以做完全相反的事情。因此,如果您在加载电影时尝试更改输入图像的大小,则必须使用
cv::resize()
。如果您正在加载相机输入,则可能是相机不支持此分辨率。看看您是否可以使用其他程序从该相机获取此尺寸的图像。您可以通过以下方式使用
cv::resize()
: