[OpenCV] Accès rapide aux valeurs des pixels

Résolu/Fermé
caccia Messages postés 95 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 16 juin 2010 - Modifié par caccia le 4/06/2010 à 11:05
caccia Messages postés 95 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 16 juin 2010 - 4 juin 2010 à 14:41
Salut à tous,

je visionne actuellement (en même temps que j'écris ces quelques lignes comme quoi la technologie, c'est quand même classe) une superbe vidéo issue directement de ma webcam. Cette vidéo, je la traite par différents procédés, je la triture un peu dans tous les sens et une fois mon traitement fait, j'affiche en temps réel toujours l'histogramme. Jusque là, je pense que tout le monde ayant touché un peu à OpenCV comprend ce dont je parle.

Je cherche désormais à accéder rapidement à la valeur de mes pixels.

Mais!

Il se trouve que j'aimerais faire une sorte d'histogramme sur mes colonnes lors d'une entrée clavier. Comme l'image dont je sors l'histogramme sus-mentionné (ouai ce mot fonctionne aussi en dehors des déclarations d'impôts) n'a que trois niveaux de couleurs à savoir du blanc, du gris à 127 et du noir, il me suffit en principe de sortir un vecteur à trois valeurs (l'une correspondant au nombre de pixels blanc, le deuxième au nombre de pixel gris et la troisième au nombre de pixel noir). Et ce pour chaque colonne de mon image. Au final, cela me ferait un grand tableau avec autant de vecteurs que de colonnes, chaque vecteur comportant trois valeurs.

Autrement dit: pendant que mon programme continue de traiter la vidéo, une entrée clavier enregistre la série de vecteurs dans un fichier.

Problème!

Il faut que ce traitement soit rapide. Or pour pouvoir récupérer les valeurs de mes pixels sur une colonne complète, il faut que je fasse deux itérations pour parcourir toute mon image. A l'intérieur de ces itérations, je devrais en théorie faire un CV_IMAGE_ELEM. Cependant, cette méthode devient vite longue. Surtout que pendant que mon ordinateur traite la question de l'histogramme sur les colonnes d'une image, je veux qu'il continue le traitement en temps réel sur la vidéo.

Question: Comment faire pour accéder à la valeur de mes pixels sans nécessairement passer par la fonction CV_IMAGE_ELEM et ce, afin de gagner un temps de traitement conséquent?

Si quelqu'un a une petite idée, qu'il n'hésite pas à me le faire savoir. Bière de remerciement en perspective...


1 réponse

caccia Messages postés 95 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 16 juin 2010 16
4 juin 2010 à 14:41
Pour les quelques uns que cela pourrait intéresser malgré tout.

On peut accéder à la valeur des pixels grâce à la fonction cvGet2D. Il faut pour cela déclarer une variable CvScalar. Puis on accède aux valeurs prises par notre variable de cette façon: s.val[0] l'indice correpondant à la profondeur de couleur recherchée...
0