2010-06-10 5 views
0

img_hsv - элемент Mat в изображении hsv!Указатель uchar * вопрос в opencv vC++ 2008

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

ответ

0

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

Смежные вопросы