我想在我的图像中找到biggerst轮廓(使用opencv和C ++)。我读过这个帖子: Finding Contours in OpenCV?和Draw the biggest element conncted using areaContours (OpenCV )但我收到错误:'varName'未在此范围内声明,这意味着编译器认为我还没有声明该变量对吗?所以这段代码我的代码:
threshold(Img, Img, t, 255, CV_THRESH_BINARY_INV);
vector<vector<Point>> varName;
findContours(Img, varName, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
我收到了这个错误:
D:\OpencvWorkspace\....|50|error: 'varName' was not declared in this scope|
第50行是这段代码:
vector<vector<Point>> varName;
我的问题。为什么编译器要求这个变量没有在我声明该变量的行声明。有人能帮帮我吗?
答案 0 :(得分:2)
您使用了pre c ++ 11标准编译器(在your comment中已经证明)。较旧的标准存在一个问题,让解析器消除了>>
中嵌套模板类型说明符中使用的一对结束尖括号operator>>()
的歧义。因此,你必须在它们之间写一个空格:
vector<vector<Point> > varName;
// ^ Note the space
答案 1 :(得分:0)
Yups喜欢πάνταῥεῖ说。问题因为“&gt;”之间的空格和“&gt;”。 所以我改变了声明:
vector<vector<Point>> varName;
到这一个:
vector<vector<Point> > varName;
在“&gt;”之间添加空格和“&gt;”并且错误消失了......谢谢πάνταῥεῖ