OpenCV: Partición de un cv::Mat

Estoy tratando de particionar un cv::Mat en un cv::Mat más pequeño usando OpenCV. Encontré este método en línea pero no puedo hacerlo funcionar. Quiero dividir un cv::Mat de, digamos, 640 x 480 en bloques de, digamos, 32 x 32 y operar en cada bloque individualmente a medida que avanzo.

Aquí está mi código. curr_frame contiene la imagen total como cv::Mat. N_per_col y N_per_row contienen el número de bloques mb_sz x mb_sz por columna y fila respectivamente.

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
        }
    }   
}

Esto compila bien, pero en tiempo de ejecución obtengo una imagen llena de píxeles NULL en tmp_img. curr_frame definitivamente está bien, ya que puedo verlo con imshow().

La documentación no es muy clara al respecto, por lo que cualquier ayuda sería muy apreciada.

preguntado el 01 de julio de 12 a las 05:07

el código parece estar bien y la documentación también se muestra claramente este uso -

1 Respuestas

Como mencioné en los comentarios, el código es correcto. para estar seguro, lo probé con opencv 2.4.1 y el resultado fue el esperado. así que supongo que el problema es con algo más que no se menciona aquí.

Respondido 01 Jul 12, 06:07

Tienes razón, ese no era el problema. ¡Lo siento por los inconvenientes ocasionados! - NOP

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.