Erro ao mostrar Imagem com OpenCV

Olá pessoal,

Gostaria de pegar uma parte de uma imagem jogá-la em uma matriz passar algum tipo de filtro nela manualmente( sem usar as funções do OpenCV) e mostrar o resultado em uma janela para o usuário. Para tanto quero usar só as funções imread para abrir a imagem e a imshow para mostrar mas não estou conseguindo mostrar a imagem cortada o código compila mas dá aquela janela de erro de execução.

Creio que o erro seja na parte onde crio uma matriz pra servir de copia para usá-la no imshow . Creio que o erro seja de conversão mas não estou conseguindo tirar esse erro.

Alguém tem alguma sugestão ?

O código que estou usando segue a baixo :

#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
using namespace cv;

int main()
{


     Mat image = imread("Imagem5.png");
     int m[20][30];
     int v[600];

	// Pegando parte da imagem
     for(int i=0; i< 20 ;i++)
    {
        for(int j=0; j<30 ; j++)
        {
          m[i][j]=  (int)image.at<uchar>(i+20,j+30);
        }

    }
    // Mostrando no console 
     for(int i=0; i< 20 ;i++)
    {
        for(int j=0; j<30 ; j++)
        {
          cout <<  m[i][j] << " ";
        }
        cout << endl;
    }

 Mat copia;
 for(int i=0; i< 20 ;i++)
    {
        for(int j=0; j<30 ; j++)
        {
        // deve ta dando erro aqui 
         copia.at<int>(i,j) = m[i][j];
        }

    }

    imshow("Mostar a copia do corte",copia);
    waitKey();
    return 0;
}

Você tem que criar a nova Mat especificando não só o tamanho, mas tipo dos dados (numero de canais, se são inteiros 8bits, 16bits, float, etc). Se não fizer isso a matriz estará vazia, tamanho zero.

Veja Mat::Mat

Como, nesse caso seria para inteiro ? Fiz assim :

copia(20,30, CV_32F);

Mas não deu certo. Ficou o fundo preto com pontos brancos o que não tem nada haver com a imagem original.
Coloquei pra ficar com o tamanho da imagem original mas fica a mesma coisa.

Você está lendo uchar da imagem original, e escrevendo em valores inteiros, ou seja são escalas totalmente diferentes. Em um 255 é o valor maximo, branco, e no outro vai ser INT_MAX. Crie a segunda com o mesmo tipo da primeira.

Era bom tu ver algum tutorial sobre como funciona o básico da biblioteca.