OpenCV-获取图像的一部分

时间:2019-03-26 09:48:26

标签: c++ opencv mat

我想将一部分图像加载到另一幅图像中。有几种简单的方法可以做到这一点,但是例如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 x980。看来,Opencv只是在右下侧切割并保持左上方区域。

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

有什么想法吗?

关于, 扬

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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);