【问题标题】:Extract sub-image from image using OpenCV and C++使用 OpenCV 和 C++ 从图像中提取子图像
【发布时间】:2018-08-26 17:59:24
【问题描述】:

我正在尝试从 openCV 和 C++ 中的 RGB 图像中获取子图像。我已经看过关于这个主题的其他线程,但它对我没有用。

这是我使用的代码:

Mat src = imread("Images/00011_00025.ppm");
Rect crop(1, 1, 64, 67);
Mat rez = src(crop);

图像尺寸为 64x67,所以我不明白为什么我在控制台中收到以下错误:

断言失败(0

你知道这个错误的原因是什么吗?

【问题讨论】:

  • 从 1 开始,高度为 67 至少需要 68 行。 OpenCV 中的索引从 0 开始,所以只需使用 cv::Rect(0,0,64,67)

标签: c++ opencv


【解决方案1】:
Rect crop(1, 1, 64, 67);

矩形的左上角位于 (1,1) 位置,其大小设置为 64x67。

Mat rez = src(crop);

使用此矩形裁剪图像时超出范围,因为矩形的偏移量为一个像素,但与要裁剪的图像大小相同。 您可以手动计算宽度和高度的偏移量,或者,这是我首选的裁剪解决方案,使用cv::Range

使用范围,您可以定义行和列跨度来执行裁剪:

cv::Range rows(1, 64);
cv::Range cols(1, 67);
Mat rez = src(rows, cols);

【讨论】:

    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2012-06-02
    • 2012-02-21
    • 2019-12-14
    • 2012-07-28
    • 1970-01-01
    相关资源
    最近更新 更多