我正在尝试使用 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() 查看。
文档对此不是很清楚,因此将不胜感激任何帮助。