OpenCV - 获取图像的一部分

问题描述 投票:0回答:2

我希望将图像的一部分加载到另一个图像中。有几个简单的方法可以做到这一点,但例如cv::Mat OutImage = Image(cv::Rect(7,47,1912,980))但是 - 结果图像是大的例如: 我得到了1920 x 1024像素的图像。我想从中剪切一个cv:Rect(7,47,1912,980)。我建议,得到的图像大小(1912 - 7 = 1905)x(980 - 47 = 933)像素,但它有1912 x 980.看来,Opencv只是在右下方切割并保持左上区。

图像的尺寸很重要,因为在下一步中我想要执行减法,该减法仅在Mat对象具有相同尺寸时才有效。我也不想使用自己设计的循环,因为性能非常重要。

有任何想法吗?

此致,Jan

c++ opencv mat
2个回答
2
投票

它实际上是cv:Rect(x,y,width,height),所以你应该将最后两个参数设置为你愿意的输出宽度和高度。注意你设定的范围或它会导致错误。


0
投票

我也处理过这个问题,我将在这里给出我的例子,它对我很有帮助。你也可以试试这个。

 Rect const box(100, 295, 400, 185); //this mean the first corner is
                                      //(x,y)=(100,295)
                                     // and the second corner is
                                     //(x + b, y+c )= (100 +400,295+185)

 Mat ROI = frame(box);
© www.soinside.com 2019 - 2024. All rights reserved.