了解一个 Mat 元素 Opencv 的值

Posted

技术标签:

【中文标题】了解一个 Mat 元素 Opencv 的值【英文标题】:Knowing the value of an Mat element Opencv 【发布时间】:2013-06-28 12:42:13 【问题描述】:

根据我的问题, 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;

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

【问题讨论】:

【参考方案1】:

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

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 ""

你可以验证这个事实here。

【讨论】:

【参考方案2】:

William 已经谈到了这一点,但您需要矩阵中值的数字表示。您可以简单地将数据请求为无符号整数。

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

【讨论】:

有趣。这是否保证安全或在什么条件下? 那是另一种方法。丹克。也会很有用。

以上是关于了解一个 Mat 元素 Opencv 的值的主要内容,如果未能解决你的问题,请参考以下文章

opencv 访问 CV_32FC3 BGR cv::Mat 的颜色元素

矩阵的简单传递,即。 cv::Mat 到 OpenCV2.4 中的函数

简单的opencv问题,如何把一个vector中的值传递给mat?

来自 Mat 的 OpenCV 访问元素

opencv怎么给mat赋值

OpenCV:如何有效地将 Mat2d 矩阵的每个元素乘以 Mat1d 矩阵