如何在OpenCV中缩放Mat

5

我很沮丧地尝试寻找一种方法,使我能够将Mat对象缩放到不同的大小。请问有人可以帮助我吗?

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

2个回答

11

如果您的意思是通过调整大小缩放图像,请使用以下方式使用resize()函数:

如果您的意思是通过调整大小缩放图像,请使用以下方式使用resize()函数:

resize(src, dst, dst.size(), 0, 0, interpolation);
否则,如果你只需要更改Mat的行数,可以使用Mat::reshape()函数。请注意,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())));

10

您可以使用resize()函数

创建一个新的具有新尺寸的Mat结果

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

了解更多插值方法,请查看此文档:geometric_transformations.html#resize


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接