我很沮丧地试图找到一种允许我将Mat对象缩放到不同大小的方法。拜托,有人可以帮帮我吗?
我的项目正在使用Java包装器,但如果提供的答案是针对C ++本机OpenCV库,我会很高兴。
答案 0 :(得分:10)
您可以使用resize()
功能
创建新尺寸的新Mat结果
resize(input // input image
result // result image
result.size() // new dimensions
0,
0,
INTER_CUBIC // interpolation method
);
要了解更多插值方法,您可以查看此文档:geometric_transformations.html#resize
答案 1 :(得分:9)
如果通过调整大小意味着缩放图像,请使用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())));