Bonjour,
Je souhaiterai appliquer un kernel sur une image et donc effectuer un filtrage de mon image. Je voudrais savoir si on peut appliquer des tailles de kernel quelconque.

C'est a dire je veux faire ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
IplImage* img = cvLoadImage("input.jpg", 0);
    IplImage* GradiantX=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
    double a[9]={   -1, 0 ,1};
    CvMat kX;
    cvInitMatHeader( &kX, 1, 3, CV_64FC1, a );
    CvMat kY;
    cvInitMatHeader( &kY, 1, 3, CV_64FC1, a );
 
    cvFilter2D( img ,GradiantX, &kX,cvPoint(-1,-1));
    cvSaveImage("filteredX.jpg",GradiantX);
    cvFilter2D( img ,GradiantY, &kY,cvPoint(-1,-1));
    cvSaveImage("filteredY.jpg",GradiantY);
Est ce que c'est possible deja ? Et est ce que le résultat va bien etre le gradiant de l'image selon X et Y?

D'avance merci.