2013-07-15 2 views
-3

I ont déclaré une matrice et on calcule ensuite la moyenne de tous les éléments de ce typesoustraire une valeur de tous les éléments de matrice dans opencv

 CvMat* rgb1 = cvCreateMat(5, 5, CV_32FC1); 
     // declared the elements of rgb1// 
     CvScalar avg = cvAvg(rgb1); //calculated the average of all elements of rgb1 matrix 

Comment soustraire la valeur moyenne (moyenne) de l'ensemble de éléments de la matrice rgb1 qui est une matrice 2D 5 * 5 comme indiqué ci-dessus. J'utilise OpenCV C API. Existe-t-il une fonction dans openCV qui peut effectuer cette opération?

Répondre

2

Vous pouvez utiliser cvSubS() pour soustraire une valeur scalaire de chaque élément d'une image:

cvSubS(rgb1, avg, rgb1); 
+0

votre réponse est correcte mais il est préférable d'utiliser une nouvelle matrice de même type et la taille que la matrice de destination pour éviter toute confusion – user2567857

+0

Toute fonction équivalente dans OpenCV 3? – mhaghighat

+2

@mhaghighat L'API C est obsolète dans OpenCV 3, vous devez donc utiliser la version C++ 'cv :: Mat'. Cette classe supporte l'opérateur '-', donc vous pouvez juste faire' cv :: Mat newMatrix = oldMatrix - 5; ' – Aurelius

Questions connexes