2012-07-01 99 views
0

我正在尝试使用OpenCV将cv :: Mat分区为更小的cv :: Mat。我在网上找到了这个方法,但是我无法使它工作。我想将640 x 480的cv :: Mat分割成32 x 32的块,并在每个块上分别进行操作。OpenCV:分区cv :: Mat

这是我的代码。 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()查看它。

该文件不是很清楚,所以任何帮助将不胜感激。

+0

代码看起来没问题,文档也清楚地显示了[this usage](http://docs.opencv.org/modules/core/doc/basic_structures.html#mat) – Mohammad

回答

1

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

+0

你说得对,问题。抱歉给你带来不便! – NOP