如何在OpenCV中扩展Mat

时间:2013-03-27 14:45:00

标签: java opencv

我很沮丧地试图找到一种允许我将Mat对象缩放到不同大小的方法。拜托,有人可以帮帮我吗?

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

2 个答案:

答案 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())));