1

我正在尝试使用 OpenCV 将 cv::Mat 划分为更小的 cv::Mat。我在网上找到了这个方法,但我无法让它工作。我想将一个 cv::Mat 划分为 640 x 480 的块,例如 32 x 32 块,并在我进行时单独对每个块进行操作。

这是我的代码。curr_frame 包含作为 cv::Mat 的总图像。N_per_col 和 N_per_row 分别包含每列和每行的 mb_sz x mb_sz 块的数量。

void ClassName::partition( void )
{       

    for( i = 0; i < N_per_col; i += mb_sz )
    {   
        for( j = 0; j < N_per_row; j += mb_sz )
        {
            cv::Mat tmp_img( curr_frame, cv::Rect( i, j, mb_sz, mb_sz ) );
            // Do stuff with tmp_img here
        }
    }   
}

这编译得很好,但在运行时我在 tmp_img 中得到一个充满 NULL 像素的图像。curr_frame 肯定没问题,我可以用 imshow() 查看。

文档对此不是很清楚,因此将不胜感激任何帮助。

4

1 回答 1

1

正如我在评论中提到的,代码是正确的。可以肯定的是,我用 opencv 2.4.1 对其进行了测试,结果如你所料。所以我想问题出在这里没有提到的其他东西上。

于 2012-07-01T05:16:46.797 回答