Из моего вопроса
Можно ли определить количество каналов в cv :: Mat Opencv
Я использую тот же код, чтобы найти лапласиан гауссиана изображения. Края вокруг объектов хорошо видны на изображении.
Как я могу получить доступ к значению отдельного элемента конечного выходного изображения, abs_dst_gray?
Я знаю, что должен использовать оператор .at, и я также обнаружил, что его тип данных — CV_8U. Я попробовал следующее
cout<<abs_dst_gray.at<uchar>(10,10)<<endl;
Но я не смог узнать, сколько он там держит, используя этот метод. Как я могу найти это значение? Если я использую int или long, я получаю значения мусора. У меня всегда была эта ошибка и проблема. Пожалуйста, помогите мне здесь. Мне нужны эти значения, чтобы я мог попытаться определить значения границ, заданные по краям, которые позже я смогу использовать для целей сегментации. заранее спасибо
Вы печатаете символ, а не целочисленное представление. Увидеть:
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 "{"
Вы можете подтвердить этот факт Вот.
Уильям уже коснулся этого, но вы хотите числовое представление значения в вашей матрице. Вместо того, чтобы приводить его в соответствии с предложением Уильяма (что работает!), Вы можете просто запросить данные как целое число без знака.
cout << abs_dst_gray.at<unsigned int>(10,10) << endl;