我有一个矩阵,其中包含尺寸为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扩展程序检查)
这可能是什么问题?
答案 0 :(得分:1)
两个版本实际上都有效。
您可以将其保存到计算机进行验证。当cv::Range
的右边界(仅适用于行范围)是最大值时,它应该是ImageWatch的错误。
另请注意,cv::Range
的右边界是独占的。因此,为了使两个版本的图像完全相同,您应该将第一个版本更改为:
cv::Mat A = B(cv::Range(0, dim_y), cv::Range(dim_x / 4, dim_x - dim_x / 4));