我有std::vector
个cv::Point2f
个值。
我有Point2f
这是当前的鼠标位置。
cv::Point2f mousePnt;
std::vector<cv::Point2f> maskPnts;
我有一个函数检查当前鼠标点击点是否包含在向量中,如果是,则将其删除:
if (std::find(maskPnts.begin(), maskPnts.end(), mousePnt) != maskPnts.end())
{
std::cout << "found pnt: " << mousePnt << std::endl;
maskPnts.erase(std::remove(maskPnts.begin(), maskPnts.end(), mousePnt), maskPnts.end());
}
我想做的是为此添加一个误差。因此,如果鼠标单击位于现有值的20个像素范围内,则仍会从矢量中删除该现有值。
我该怎么做?
谢谢。
答案 0 :(得分:0)
谢谢大家。根据上面的评论,我有这个功能:
for (int p = 0; p < maskPnts.size(); p++)
{
if (std::pow(sqrt(mousePnt.x - maskPnts[p].x),2) + std::pow((mousePnt.y - maskPnts[p].y),2) <= 20)
{
maskPnts.erase(maskPnts.begin() + p);
}
}