1

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

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

先感谢您。

4

1 回答 1

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);
    }
}
于 2013-10-09T06:49:59.447 回答