[英]Subregion of image matrix in OpenCV
我有一个矩阵,其中包含尺寸为1920x1080的RGB相机的色框。 从该图像中,我想摆脱左右两侧,使其尺寸为960x1080。
但是,我似乎无法弄清楚如何准确获得图像的这一部分。 我能够使用以下命令提取尺寸为960x1079的子图像:
cv::Mat A = B(cv::Range(0, dim_y - 1), cv::Range(dim_x / 4, dim_x - dim_x / 4));
这给了我一个有效的图像。 但是,当我尝试使用
cv::Mat A = B(cv::Range::all(), cv::Range(dim_x / 4, dim_x - dim_x / 4));
...图像尺寸为960x1080,但数据无效且不包含任何值(已通过VS ImageWatch扩展名检查)
这里可能是什么问题?
这两个版本实际上都是有效的。
您可以通过将其保存到计算机来进行验证。 当cv::Range
(仅适用于行范围)的右边界为最大值时,这应该是ImageWatch的错误。
另请注意, cv::Range
的右边界是唯一的。 因此,为了使两个版本的图像相同,您应该将第一个版本更改为:
cv::Mat A = B(cv::Range(0, dim_y), cv::Range(dim_x / 4, dim_x - dim_x / 4));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.