OpenCV三角网剖分 SubDiv2D 详解

未完待续。。。。。

class SubDiv2D{
 
    // 两种构造函数
 
    Subdiv2D();// 第一种无参的构造函数
    
    /*
    *param[in] rect 空的Delaunay細分割的参数。例如,针对整个图片的场合,cv::Rect(0,0,width,height)
    */
    Subdiv2D(Rect rect);
 
    //初始化
    void initDelaunay(Rect rect);
    //往Delaunay三角形里面追加点
    int insert(Point2f pt);
    void insert(const vector<Point2f>& ptvec);
 
 
    //返回指定点所属三角形相关信息
    /*
    *param[in] pt 指定点
    *param[out] edge 指定点所属三角形最初的边ID
    *param[out] vertex 指定点所属三角形最初的頂点ID
    */
    int locate(Point2f pt, int& edge, int& vertex);
    // 找到与指定点最近的细分割的顶点。
    /*
    *param[in] pt 指定点
    *param[out] nearestPt 最近的细分割的顶点
    */
    int findNearest(Point2f pt, Point2f* nearestPt=0);

    //找到Delaunay边的集合
    /*
    \param[out] edgeList 边情报的集合。(始点的x座標和y座標、終点的x座標和y座標)
    */
    void getEdgeList(vector<Vec4f>& edgeList) const;
 
 
    // 找到Delaunay三角形的顶点
    /*
    \param[out] traiangleList 三角形顶点的集合。(3个点的x座標和y座標)
    */
    void getTriangleList(vector<Vec6f>& triangleList) const;

    // 找到Voronoi区域
    /*
    \param[in] idx Voronoi区域的ID
    \param[out] facetList 包围Voronoi区域的顶点
    \param[out] facetCenters Voronoi区域的母点
    */
    void getVoronoiFacetList(const vector<int>& idx, vector<vector<Point2f> >& facetList,
                                     vector<Point2f>& facetCenters);
    //!取得顶点
    /*!
    \param[in] vertex 顶点ID
    \param[out] firstEdge 与顶点最接近的边的ID
    \return 顶点的座標
    */
    Point2f getVertex(int vertex, int* firstEdge=0) const;
    
    //! 找到指定边关联的一条边
    /*!
    \param[in] edge 边的ID
    \param[in] nextEdgeType 指定要取到的边和指定边有怎样关系。
    \return 关联边的ID
    */
    int getEdge( int edge, int nextEdgeType ) const;
    int nextEdge(int edge) const;
    int rotateEdge(int edge, int rotate) const;
    int symEdge(int edge) const;

    //找到指定边的开始点
    /*
    \param[in] edge 指定边的ID
    \param[in] orgpt 开始点坐标。
    \return 取到的场合,返回>0的整数
    */
    int edgeOrg(int edge, Point2f* orgpt=0) const;

    //找到指定边的终点
    /*!
    \param[in] edge 指定边的ID
    \param[in] dstpt 终点坐标。
    \return 取到的场合,返回>0的整数
    */
    int edgeDst(int edge, Point2f* dstpt=0) const;
}




  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值