如何使用boost :: geometry :: distance与opencv cv :: Point?

时间:2015-12-08 16:42:34

标签: c++ opencv boost wrapper boost-geometry

Document doc3 = null;
    try {
        doc3 = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
                .referrer("http://www.google.com").ignoreHttpErrors(true).get();

    } catch (NullPointerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

如何使用boost :: geometry :: distance与opencv cv :: Point而不转换为boostPoint?

typedef boost::geometry::model::d2::point_xy<double> boostPoint;

更新

我尝试了这段代码,但却抱怨double EuclideanDistance(const cv::Point2d &pt1, const cv::Point2d &pt2) { boostPoint boostPt1(pt1.x, pt1.y); boostPoint boostPt2(pt2.x, pt2.y); double distance= boost::geometry::distance(boostPt1, boostPt2); return distance; } x

error: ‘x’ has not been declared

2 个答案:

答案 0 :(得分:1)

确保包含doc所示的必要标题:

#include <boost/geometry/geometries/register/point.hpp>

答案 1 :(得分:0)

如果您想使代码更优雅,只需使用正确的方法。如果添加到代码中,Boost不是一个优势。由于您的点是OpenCV点,使用OpenCV计算距离,如下所示:

callback()

修改

由于OP需要以这种方式进行,我可以建议这个解决方案:创建自己的Point Class让我们称之为double EuclideanDistance(const cv::Point2d &pt1, const cv::Point2d &pt2) { return cv::norm(pt1-pt2,cv::NORM_L2); } 。在MyPoint中定义复制构造函数以及来自MyPointcv::Point的对话。在您的代码中,只需在任何地方使用boostPoint。如果您需要帮助来实现此评论。