将Mat分割成相同大小的subMat

时间:2013-10-09 06:18:00

标签: c++ opencv mat

我在2.4.6版本中使用Visual Studio 2012和OpenCV库在C ++中编程。

我想知道如何将Mat对象划分为相同大小的n subMat。 让我解释一下:我有12行和24列的Mat。假设您要将其划分为3行和6列,从而获得18个4 * 4的单元格。这些单元格中的每一个都是初始Mat的子单元格。我想知道是否有快速的方法来做到这一点。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用colRangerowRange

这样的事情可能有所帮助:

cv::Mat mat(12, 24, CV_8U);
cv::Mat imageBlock;
std::vector<cv::Mat> imageBlocks;
int blockSize = 4;
for(i = 0; i < 12; i += blockSize)
{
    for(j = 0; j < 24; j += blockSize)
    {
        imageBlock = mat.rowRange(i, i + blockSize).colRange(j, j + blockSize);
        imageBlocks.push_back(imageBlock);
    }
}