gpt4 book ai didi

c++ - OpenCV 2 cookbook 的 Contours 示例编译错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:28 24 4
gpt4 key购买 nike

我尝试了本书中的示例代码来绘制原始图片中的轮廓。但是,以下代码在带有 Mingw 4.4 的 Qt 下无法成功编译。

 // Eliminate too short or too long contours
int cmin= 100; // minimum contour length
int cmax= 1000; // maximum contour length
std::vector<std::vector<cv::Point> >::
const_iterator itc= contours.begin();
while (itc!=contours.end()) {
if (itc->size() < cmin || itc->size() > cmax)
itc= contours.erase(itc);
else
++itc;
}

警告:有符号和无符号整数表达式之间的比较警告:有符号和无符号整数表达式之间的比较错误:没有匹配函数调用'std::vector, std::allocator >>, std::allocator, std::allocator >> >>::erase(__gnu_cxx::__normal_iterator, std::allocator >>* , std::vector, std::allocator >>, std::allocator, std::allocator >> >> >&)'

它说 itc 没有方法 size()。然而,这本书真的是这么写的。我错过了什么吗?

最佳答案

那是因为std::vector::erase返回一个 iterator,而您正在分配给一个 const_iterator。这编译:

...
std::vector<std::vector<cv::Point> >::iterator itc= contours.begin();
// ^
while (itc!=contours.end()) {
if (itc->size() < cmin || itc->size() > cmax)
itc= contours.erase(itc);
else
++itc;
}

关于c++ - OpenCV 2 cookbook 的 Contours 示例编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11311614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com