OpenCv,检查点击鼠标是否靠近Point2f?

时间:2017-08-11 17:15:53

标签: c++ opencv

我有std::vectorcv::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个像素范围内,则仍会从矢量中删除该现有值。

我该怎么做?

谢谢。

1 个答案:

答案 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);
            }
        }