Comment éditer / lire les valeurs de pixel dans OpenCv à partir de la variable Mat?
Je suis à la recherche d'un moyen efficace pour le montage et la lecture des pixels à partir de Tapis (ou Mat3b) de la variable.
J'ai utilisé :-
Image.at<Vec3b>(i,j)
mais il semble être très lent.
J'ai aussi utilisé ce:-
A.data[A.channels()*A.cols*i + j + 0]
mais le problème je suis face à ce est quand je lance cette boucle
for(i=0; j<A.rows; i++){
for(j=0; j<A.cols; j++){
A.data[A.channels()*A.cols*i + j + 0] = 0;
A.data[A.channels()*A.cols*i + j + 1] = 0;
A.data[A.channels()*A.cols*i + j + 2] = 0;
}
}
seulement une partie de l'image est noirci.
source d'informationauteur Ravi Upadhyay
Vous devez vous connecter pour publier un commentaire.
Ici vous pouvez voir quelques-unes des possibilités rapide pour l'accès à l'élément.
Mais si vous voulez le faire à votre façon, vous avez besoin d'ajouter un support. Sinon, vous calcul de l'indice n'est pas correct:
Mais la mise en page de la mémoire n'est pas garanti d'être contiguës, en raison de rembourrage.
Ainsi, selon cette vous devriez plutôt utiliser une formule comme ceci:
C'est l'un de la manière la plus efficace pour le montage et la lecture des pixels à partir du cv::Mat.
Créer pointeur vers une ligne (un canal spécifique si nécessaire)