【发布时间】:2012-07-01 04:44:13
【问题描述】:
我正在尝试使用 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() 查看。
文档对此不是很清楚,因此我们将不胜感激。
【问题讨论】:
-
代码看起来没问题,文档也清楚地显示this usage
标签: c++ image opencv data-partitioning