указатель учар * вопрос в opencv vc ++ 2008 - PullRequest
0 голосов
/ 10 июня 2010

img_hsv - это элемент Mat изображения hsv!

когда я даю cout<<*img_hsv.data+10;, это дает истинное значение пикселя, т.е. 79 как вывод. но когда я назначаю uchar * a=img_hsv.data+10;, это дает мне другое значение ... не могли бы вы объяснить мне, почему это так? спасибо!

1 Ответ

0 голосов
/ 10 июня 2010

В первом случае вы сначала получаете содержимое указателя img_hsv.data, а затем добавляете 10 к этому значению и отображаете его.Во втором случае вы просто увеличиваете указатель на 10 единиц.Это увеличенное значение указывает на область памяти.Таким образом, a будет содержать адрес местоположения, следовательно, он будет отличаться от напечатанного значения.Если вы имели в виду, что * a дает другое значение, то это из-за приоритета оператора.В первом случае указатель сначала разыменовывается, а затем к значению разыменования добавляется 10, а во втором случае сначала увеличивается указатель, а затем разыменовывается его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...