Зная значение элемента Mat Opencv

Из моего вопроса
Можно ли определить количество каналов в cv :: Mat Opencv

Я использую тот же код, чтобы найти лапласиан гауссиана изображения. Края вокруг объектов хорошо видны на изображении.

Как я могу получить доступ к значению отдельного элемента конечного выходного изображения, abs_dst_gray?

Я знаю, что должен использовать оператор .at, и я также обнаружил, что его тип данных — CV_8U. Я попробовал следующее

cout<<abs_dst_gray.at<uchar>(10,10)<<endl;

Но я не смог узнать, сколько он там держит, используя этот метод. Как я могу найти это значение? Если я использую int или long, я получаю значения мусора. У меня всегда была эта ошибка и проблема. Пожалуйста, помогите мне здесь. Мне нужны эти значения, чтобы я мог попытаться определить значения границ, заданные по краям, которые позже я смогу использовать для целей сегментации. заранее спасибо

2

Решение

Вы печатаете символ, а не целочисленное представление. Увидеть:

cv::Mat img(3,3,CV_8U,cvScalar(123));
cout<<"Number "<<(int)img.at<uchar>(1,1)<<" represents ASCII character \""<<img.at<uchar>(1,1)<<"\"";

Выход:

Number 123 represents ASCII character "{"

Вы можете подтвердить этот факт Вот.

4

Другие решения

Уильям уже коснулся этого, но вы хотите числовое представление значения в вашей матрице. Вместо того, чтобы приводить его в соответствии с предложением Уильяма (что работает!), Вы можете просто запросить данные как целое число без знака.

cout << abs_dst_gray.at<unsigned int>(10,10) << endl;
2

По вопросам рекламы [email protected]