获取错误 - 使用垫子时,CV :: MAT’没有名为“ Get”的成员

Getting error - class cv::Mat’ has no member named ‘get’ when using Mat.get....is it deprecated?

本文关键字:Get 成员 MAT 获取 CV 取错误      更新时间:2023-10-16

我想一个快速的简单函数,我可以为垫子对象提供一个行和col编号,并在该位置输出元素的值...我搜索了找到了一些网站推荐" Mat.get(int row,int col)",但是当我尝试使用它时,我会遇到错误

这是我的代码,错误是在帖子标题

Mat M(2,2, CV_8UC3, Scalar(0,0,255));

cout << "b = " << endl << " " << M.get(0, 0) << endl << endl;

我不想写一个漫长的循环才能在像素上检索...有人可以帮助我找出为什么我会遇到此错误或推荐快速1衬里以获得一个值垫子对象中的一个元素...但是一个衬里需要能够运行,而无需知道的类型,因此垫子无法正常工作。任何帮助都将受到赞赏

编辑:

按照您的建议使用M.AT

cout << "M.at = " << endl << " " <<a.at<uchar>(0, 0) << endl << endl;

OUPUT是这个

M.at = 
^@

当您不正确时会得到的那种奇怪的符号...我试图避免M.AT,因为我认为它需要一种我不想输入的类型。任何帮助都将受到赞赏

编辑2:感谢您这么快回到我...我发现一个错误我的垫子是CV_64F,我更改了它是出于另一个原因...我将其更改回CV_8UC3,还尝试了CV_8UC1并获得了以下输出两个

M =
d(yes letter d)   

此处的任何建议将不胜感激。..

没有get()cv::Mat方法,您应该使用Mat::at()

M.at<uchar>(0, 0)

编辑:如果您的垫子类型为'cv_64f',则应使用

M.at<double>(0, 0)