Colonne somme de Opencv éléments de la Matrice
J'ai besoin de calculer la somme des éléments dans toutes les colonnes séparément.
Maintenant, je suis en utilisant:
Matrice cross_corr doivent être additionnées.
Mat cross_corr_summed;
for (int i=0;i<cross_corr.cols;i++)
{
double column_sum=0;
for (int k=0;k<cross_corr.rows;k++)
{
column_sum +=cross_corr.at<float>(k,i);
}
cross_corr_summed.push_back(column_sum);
}
Le problème est que mon programme prend un temps assez long à exécuter. C'est l'une des pièces qui se méfie à cause de cela.
Pouvez-vous informer de toute éventuelle mise en œuvre plus rapide???
Merci!!!
double possible de Somme de chaque colonne opencv
OriginalL'auteur Robert Kirchhoff | 2012-10-11
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'un cv::réduire:
cv::sum
est plus simple.OriginalL'auteur Andrey Kamaev
Si vous savez que vos données est continu et unique canalisée, vous pouvez accéder à la matrice de données directement:
qui sera plus rapide que votre utilisation de
.at_<float>()
. En général j'évite l'utilisation de.at()
chaque fois que possible, car il est plus lent que l'accès direct.Aussi, bien que
cv::reduce()
(suggéré par Andrey) est beaucoup plus lisible, je trouve qu'il est plus lent que même votre mise en œuvre dans certains cas.OriginalL'auteur Aurelius
Ce n'est pas aussi bon que cv::reduce(). Pourtant, j'ai essayé d'éviter d'utiliser plusieurs fois pour la boucle, et aussi l'utilisation de .at<>.
OriginalL'auteur user3693028