获取错误 - 使用Mat.get时,类cv :: Mat'没有名为'get'的成员吗?它是否已被弃用?

时间:2014-03-09 03:11:16

标签: c++ opencv

我想要一个快速简单的函数,我可以为mat对象提供行和列号,并让它在该位置输出元素的值...我用google搜索并发现一些网站推荐'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;

我不想写一个长的for循环来检索像素...有人可以帮我弄清楚为什么我会收到这个错误或者推荐一个快速的1个衬里才能得到一个值mat对象中的单个元素...但是一个衬里需要能够在没有类型被知道的情况下运行,因此Mat.at将无法工作....谷歌搜索带来了不容易的1个衬垫....任何帮助表示赞赏

编辑:

按照你的建议使用M.at

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

输出就是这个

M.at = 
^@

当你做得不对时,你会得到一种奇怪的符号......我试图避免M.at,因为我认为它需要一种我不想进入的类型......任何帮助表示赞赏

编辑2:谢谢你这么快回复我...我发现一个错误我的垫子是CV_64F我改变了它的另一个原因...我把它改回CV_8UC3并尝试了CV_8UC1并获得了以下输出

M =
d(yes letter d)   

欢迎来自此处的任何建议......

1 个答案:

答案 0 :(得分:0)

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

M.at<uchar>(0, 0)

编辑:如果您的Mat类型为'CV_64F',则应使用

M.at<double>(0, 0)