2012-07-01 4 views
0

Я пытаюсь разделить cv :: Mat на меньший cv :: Mat's с помощью OpenCV. Я нашел этот метод онлайн, но я не могу заставить его работать. Я хочу разделить cv :: Mat, скажем, 640 x 480 на блоки, скажем, 32 x 32, и работать с каждым блоком индивидуально, когда я иду.OpenCV: Partitioning 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 
     } 
    } 
} 

компилируется нормально, но во время выполнения я получаю изображение, полное NULL пикселей в tmp_img. curr_frame определенно в порядке, поскольку я могу просмотреть его с помощью imshow().

Документация не очень понятна, поэтому любая помощь будет принята с благодарностью.

+0

Код выглядит хорошо, и в документации также четко показано [это использование] (http://docs.opencv.org/modules/core/doc/basic_structures.html#mat) – Mohammad

ответ

1

Как я упомянул в комментариях, код является корректным. Конечно, я тестировал его с opencv 2.4.1, и результат был таким, каким вы ожидали. поэтому я предполагаю, что проблема связана с чем-то другим, не упомянутым здесь.

+0

Вы правы, это было не так, Проблема. Приносим извинения за неудобства! – NOP

Смежные вопросы