OpenCV:对cv::Mat进行分区

OpenCV: Partitioning a cv::Mat

本文关键字:分区 cv OpenCV Mat      更新时间:2023-10-16

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

这是我的密码。curr_frame包含作为cv::Mat的总图像。_ col和N_ per_row分别包含每列和每行的mb_。

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((查看它。

文件对此不是很清楚,所以如果有任何帮助,我们将不胜感激。

正如我在评论中提到的,代码是正确的。可以肯定的是,我用opencv 2.4.1测试了它,结果正如你所期望的那样。所以我想问题出在这里没有提到的其他方面。