我想将一部分图像加载到另一幅图像中。有几种简单的方法可以做到这一点,但是例如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对象具有相同的尺寸时才有效。我也不想使用自己设计的循环,因为性能非常重要。
有什么想法吗?
关于, 扬
答案 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);