Получить значения пикселей из cv :: Mat в виде чисел? - PullRequest
0 голосов
/ 28 марта 2020

Здравствуйте,

Я довольно новичок в OpenCV и C ++, поэтому я действительно не знаю, что здесь происходит. Я искал способ доступа к значениям пикселей изображения Mat (типа CV_8UC3) и нашел это:

Vec3b bgrPixel = foo.at<Vec3b>(Point(x, y));
//bgrPixel.val[0] is B, bgrPixel.val[1] is G, bgrPixel.val[2] is R

Но это выводит символы вместо целых, когда я, например, cout << bgrPixel.val[0] << endl;, это дает некоторые действительно странные символы:

r
Ç
è
Ç
~
ö
É
è
ÿ
×
×
;
2
#
2
/
+
'
"
)
%
-
*

Как я могу получить значения пикселей в виде целых чисел? Или есть более простой способ доступа к ним, например, путем преобразования мата в обычный массив (как вы это сделали бы в Python)?

Спасибо за ответы заранее!

1 Ответ

0 голосов
/ 28 марта 2020

Использование: cout << (int)(bgrPixel.val[0]) << endl;

bgrPixel.val[0] имеет тип unsigned char и печатается как символ.

Кастинг от unsigned char до int решает проблему.

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