繁体   English   中英

cv :: Mat_是否保持其ROI?

[英]Does cv::Mat_ maintain its ROI?

假设我有一个名为image的100x100 cv::Mat1b 然后我做:

cv::Mat1b subImage = image(cv::Rect(0,0,49,49));

image左上角放入subImage 然后说我将subImage传递给一个函数,说cv::findContours 生成的轮廓会相对于image还是subImage 也就是说, findContours()知道subImage实际上是一个子图像? 或执行所有OpenCV函数只是将像这样提取的subImage视为“完整图像”,然后调用者有责任将提取区域的角添加到轮廓像素的每个坐标中(在本例中为例)轮廓像原始image解释的那样?

子图像被视为完整图像,子图像上调用的函数不知道它不是完整图像。

但是,findcontour函数确实采用了ROI坐标的可选参数,以便返回相对于完整图像的轮廓坐标。或者,您可以简单地向每个轮廓点添加偏移量

如果将subImage声明为:

Mat1b subImage = image(cv::Rect(0,0,49,49));

那么任何OpenCV函数都会将subImage当作完整的Mat对象。 但是,对subImage所做的任何更改也将反映在image的相应部分中。

如果要从image排除subImage所做的更改,则应使用:

Mat1b subImage = image(cv::Rect(0,0,49,49)).clone();

现在您有一个subImage没有指向image

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM