5

我很沮丧试图找到一种方法,可以让我将 Mat 对象缩放到不同的大小。请问,有人可以帮我解决这个问题吗?

我的项目正在使用 Java 包装器,但如果提供的答案是针对 C++ 原生 OpenCV 库的,我会很高兴。

4

2 回答 2

11

如果通过调整大小是指缩放图像,请使用resize()函数,如下所示:

resize(src, dst, dst.size(), 0, 0, interpolation);

否则,如果您只需要更改 Mat 的行数,请使用Mat::reshape()函数。请注意,重塑会返回一个新的 Mat 标头:

cv::Mat dst = src.reshape ( 0, newRowVal );

最后,如果您想任意重塑 Mat(更改行和列),您可能需要定义一个具有目标尺寸的新 Mat 并将 src Mat 复制到它:

Mat dst(newRowVal, newColVal, src.type());
src.setTo(0);
src.copyTo(dst(Rect(Point(0, 0), src.size())));
于 2013-03-27T15:57:43.463 回答
10

你可以使用 resize()函数

创建新尺寸的新 Mat 结果

resize(input             // input image 
       result            // result image
       result.size()     // new dimensions
       0, 
       0, 
       INTER_CUBIC       // interpolation method
      );

要了解更多插值方法,您可以查看此文档:geometry_transformations.html#resize

于 2013-03-27T16:14:04.767 回答