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