c++ - 了解 Mat 元素 Opencv 的值

标签 c++ opencv mat

根据我的问题, Can I determine the number of channels in cv::Mat Opencv

我正在使用相同的代码来查找图像的高斯拉普拉斯算子。在图像中可以很好地检测到物体周围的边缘。

如何访问最终输出图像的单个元素值 abs_dst_gray

我知道我必须使用“.at”运算符,而且我还发现它的数据类型是 CV_8U。我尝试了以下

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

但是使用这种方法,我无法知道它在那里有什么值(value)。我怎样才能找到那个值?如果我使用 intlong,我最终会得到垃圾值。我一直有这个错误和问题。请在这里帮助我。我需要这些值,以便我可以尝试确定边缘中给定的边界值,稍后我可以将其用于分割目的。

最佳答案

您打印字符而不是整数表示。见:

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)<<"\"";

输出:

数字123代表ASCII字符“{”

你可以验证这个事实here .

关于c++ - 了解 Mat 元素 Opencv 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17364987/

相关文章:

c++ - .NET C# 调用 C++ native Win32 DLL 时出现问题

c++ - 在同一函数中引用范围外的局部变量是否可以?

python - 通过颜色 OpenCV 2.x 跟踪多个对象

android - 如何在 Android 中从文件读取 OpenCV Mat 对象?

c++ - 在 C++ 中注册关键字

python - 使用 OpenCV (solvePnP+projectPoints) 绘制棋盘格用于姿势估计的引用框架

java - 如何从 Java/Android 的 Arraylist 中保留最好的 500 个关键点?

opencv - 在opencv中将Mat转换为iplimage *

c++ - 将 std::string 转换回使用 std::stringstream << cv::Mat 生成的 cv::Mat

c++ - 可以使用下面的数组而不初始化它吗?