2016-04-26 1 views
0

Tout ce que je veux faire est d'appliquer une matrice de convolution personnalisée (noyau) à une image (mat ou tout autre format est bien) dans opencv.Comment ouvrir un noyau personnalisé avec opencv?

Je pense qu'il y a une fonction intégrée qui le fait mais je ne le comprends pas vraiment à partir des endroits où je l'ai vu, et il semble qu'il y ait plus d'un moyen de le faire dans opencv.

Est-ce que quelqu'un sait d'une manière bonne/rapide/efficace de s'attaquer à ce problème?

Répondre

1

Si vous avez par exemple un noyau 5x5:

Mat kern = (Mat_<char>(5, 5) << -1, -1, -1, -1, -1, 
           -1, -1, -1, -1, -1, 
           -1, -1, 24, -1, -1, 
           -1, -1, -1, -1, -1, 
           -1, -1, -1, -1, -1); 

vous pouvez utiliser de filter2D fonction: http://docs.opencv.org/2.4/modules/imgproc/doc/filtering.html#filter2d

exemple pour l'application du noyau personnalisé:

filter2D(src_image, dst_image, src_image.depth(), kern);

Espoir ça aide. :)

+0

est vraiment si facile .... Merci! – user3369663