terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.1.0-pre) /home/ni/opencv/modules/imgproc/src/subdivision2d.cpp:288: error: (-211:One of arguments' values is out of range) in function 'locate'
出错的代码:
cv::Point p;
cv::Rect rect;
//...
cv::Subdiv2D subdiv(rect);
subdiv.insert(p);
可以去看源码,opencv/modules/imgproc/src/subdivision2d.cpp,line 417 insert()函数里调用了locate()函数,line 287 locate()函数里列出了报错的条件
出错的原因是p可能不在rect内(或者边界超出),加个判断:
cv::Point p;
cv::Rect rect;
//...
cv::Subdiv2D subdiv(rect);
if(p.x >= rect.x && p].y >= rect.y && p.x < rect.x + rect.width
&& p.y < rect.y + rect.height)
{
subdiv.insert(p);
}