Merge pull request #7423 from grahamfyffe:leading_edges

pull/7548/head
Vadim Pisarevsky 8 years ago
commit 3dc022ae84
  1. 8
      modules/imgproc/include/opencv2/imgproc.hpp
  2. 20
      modules/imgproc/src/subdivision2d.cpp

@ -1012,6 +1012,14 @@ public:
*/
CV_WRAP void getEdgeList(CV_OUT std::vector<Vec4f>& edgeList) const;
/** @brief Returns a list of the leading edge ID connected to each triangle.
@param leadingEdgeList Output vector.
The function gives one edge ID for each triangle.
*/
CV_WRAP void getLeadingEdgeList(CV_OUT std::vector<int>& leadingEdgeList) const;
/** @brief Returns a list of all triangles.
@param triangleList Output vector.

@ -733,6 +733,26 @@ void Subdiv2D::getEdgeList(std::vector<Vec4f>& edgeList) const
}
}
void Subdiv2D::getLeadingEdgeList(std::vector<int>& leadingEdgeList) const
{
leadingEdgeList.clear();
int i, total = (int)(qedges.size()*4);
std::vector<bool> edgemask(total, false);
for( i = 4; i < total; i += 2 )
{
if( edgemask[i] )
continue;
int edge = i;
edgemask[edge] = true;
edge = getEdge(edge, NEXT_AROUND_LEFT);
edgemask[edge] = true;
edge = getEdge(edge, NEXT_AROUND_LEFT);
edgemask[edge] = true;
leadingEdgeList.push_back(i);
}
}
void Subdiv2D::getTriangleList(std::vector<Vec6f>& triangleList) const
{
triangleList.clear();

Loading…
Cancel
Save