我希望将图像的一部分加载到另一个图像中。有几个简单的方法可以做到这一点,但例如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
它实际上是cv:Rect(x,y,width,height)
,所以你应该将最后两个参数设置为你愿意的输出宽度和高度。注意你设定的范围或它会导致错误。
我也处理过这个问题,我将在这里给出我的例子,它对我很有帮助。你也可以试试这个。
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);