我很沮丧试图找到一种方法,可以让我将 Mat 对象缩放到不同的大小。请问,有人可以帮我解决这个问题吗?
我的项目正在使用 Java 包装器,但如果提供的答案是针对 C++ 原生 OpenCV 库的,我会很高兴。
如果通过调整大小是指缩放图像,请使用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())));
你可以使用 resize()
函数
创建新尺寸的新 Mat 结果
resize(input // input image
result // result image
result.size() // new dimensions
0,
0,
INTER_CUBIC // interpolation method
);
要了解更多插值方法,您可以查看此文档:geometry_transformations.html#resize