如何在OpenCV中扩展Mat

xar*_*g89 5 java opencv

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

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

Y.A*_*.AL 10

你可以使用 resize()功能

创建新维度的新Mat结果

resize(input             // input image 
       result            // result image
       result.size()     // new dimensions
       0, 
       0, 
       INTER_CUBIC       // interpolation method
      );
Run Code Online (Sandbox Code Playgroud)

要了解更多插值方法,可以查看这个doc:geometric_transformations.html#resize


Tom*_*min 9

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

resize(src, dst, dst.size(), 0, 0, interpolation);
Run Code Online (Sandbox Code Playgroud)

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

cv::Mat dst = src.reshape ( 0, newRowVal );
Run Code Online (Sandbox Code Playgroud)

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

Mat dst(newRowVal, newColVal, src.type());
src.setTo(0);
src.copyTo(dst(Rect(Point(0, 0), src.size())));
Run Code Online (Sandbox Code Playgroud)