2010-06-10 6 views
0

img_hsv est un élément Mat d'une image hsv! Quand je donne cout<<*img_hsv.data+10; donne la valeur vraie du pixel, ie 79 comme sortie. mais quand j'attribue uchar * a=img_hsv.data+10; il me donne une autre valeur ... pouvez-vous s'il vous plaît m'expliquer pourquoi est-ce le cas? Merci!pointer uchar * question dans opencv vC++ 2008

Répondre

0

Dans le premier cas, vous obtenez d'abord le contenu du pointeur img_hsv.data puis en ajoutant 10 à cette valeur et en l'affichant. Dans le second cas, vous augmentez le pointeur de 10 unités. Cette valeur incrémentée pointe vers un emplacement de mémoire. Donc, a contiendra l'adresse de l'emplacement d'où il sera différent de la valeur imprimée. Si vous vouliez dire que * a donne une valeur différente, c'est à cause de la priorité de l'opérateur. Dans le premier cas, le pointeur est déréférencé en premier, puis 10 est ajouté à la valeur déréférencée, et dans le second cas vous incrémentez d'abord le pointeur, puis vous le déréférenciez.

Questions connexes