Overloaded the minEnclosingTriangle function such that there is an alternative function with the same name which does not require the output parameter ``area''.
Changed the sample source file minarea.cpp to use the overloaded version of the function. Updated some comments in the min_enclosing_triangle.cpp source file.
This commit is contained in:
parent
0ed2f6201d
commit
8bada4c751
@ -1451,6 +1451,10 @@ CV_EXPORTS_W void boxPoints(RotatedRect box, OutputArray points);
|
|||||||
CV_EXPORTS_W void minEnclosingCircle( InputArray points,
|
CV_EXPORTS_W void minEnclosingCircle( InputArray points,
|
||||||
CV_OUT Point2f& center, CV_OUT float& radius );
|
CV_OUT Point2f& center, CV_OUT float& radius );
|
||||||
|
|
||||||
|
//! computes the minimal enclosing triangle for a set of points
|
||||||
|
CV_EXPORTS_W void minEnclosingTriangle( InputArray points,
|
||||||
|
CV_OUT OutputArray triangle );
|
||||||
|
|
||||||
//! computes the minimal enclosing triangle for a set of points
|
//! computes the minimal enclosing triangle for a set of points
|
||||||
CV_EXPORTS_W void minEnclosingTriangle( InputArray points,
|
CV_EXPORTS_W void minEnclosingTriangle( InputArray points,
|
||||||
CV_OUT OutputArray triangle, CV_OUT double& area );
|
CV_OUT OutputArray triangle, CV_OUT double& area );
|
||||||
|
@ -170,6 +170,9 @@ static bool findGammaIntersectionPoints(unsigned int polygonPointIndex, const cv
|
|||||||
const cv::Point2f &side2EndVertex, cv::Point2f &intersectionPoint1,
|
const cv::Point2f &side2EndVertex, cv::Point2f &intersectionPoint1,
|
||||||
cv::Point2f &intersectionPoint2);
|
cv::Point2f &intersectionPoint2);
|
||||||
|
|
||||||
|
static void findMinEnclosingTriangle(cv::InputArray points,
|
||||||
|
CV_OUT cv::OutputArray triangle, CV_OUT double& area);
|
||||||
|
|
||||||
static void findMinEnclosingTriangle(std::vector<cv::Point2f> &triangle, double& area);
|
static void findMinEnclosingTriangle(std::vector<cv::Point2f> &triangle, double& area);
|
||||||
|
|
||||||
static void findMinimumAreaEnclosingTriangle(std::vector<cv::Point2f> &triangle, double &area);
|
static void findMinimumAreaEnclosingTriangle(std::vector<cv::Point2f> &triangle, double &area);
|
||||||
@ -262,15 +265,39 @@ static void updateSidesCA();
|
|||||||
|
|
||||||
//! Find the minimum enclosing triangle and its area for the given set of points
|
//! Find the minimum enclosing triangle and its area for the given set of points
|
||||||
/*!
|
/*!
|
||||||
* The overall complexity of the algorithm is theta(n) where "n" represents the number
|
|
||||||
* of vertices in the convex hull of the points
|
|
||||||
*
|
|
||||||
* @param points Set of points
|
* @param points Set of points
|
||||||
* @param triangle Minimum area triangle enclosing the given polygon
|
* @param triangle Minimum area triangle enclosing the given set of points
|
||||||
* @param area Area of the minimum area enclosing triangle
|
* @param area Area of the minimum area enclosing triangle
|
||||||
*/
|
*/
|
||||||
void cv::minEnclosingTriangle(cv::InputArray points,
|
void cv::minEnclosingTriangle(cv::InputArray points,
|
||||||
CV_OUT cv::OutputArray triangle, CV_OUT double& area) {
|
CV_OUT cv::OutputArray triangle, CV_OUT double& area) {
|
||||||
|
findMinEnclosingTriangle(points, triangle, area);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Find the minimum enclosing triangle and its area for the given set of points
|
||||||
|
/*!
|
||||||
|
* @param points Set of points
|
||||||
|
* @param triangle Minimum area triangle enclosing the given set of points
|
||||||
|
*/
|
||||||
|
void cv::minEnclosingTriangle(cv::InputArray points,
|
||||||
|
CV_OUT cv::OutputArray triangle) {
|
||||||
|
double area;
|
||||||
|
|
||||||
|
findMinEnclosingTriangle(points, triangle, area);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////// Helper functions definition //////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
//! Find the minimum enclosing triangle and its area
|
||||||
|
/*!
|
||||||
|
* @param points Set of points
|
||||||
|
* @param triangle Minimum area triangle enclosing the given set of points
|
||||||
|
* @param area Area of the minimum area enclosing triangle
|
||||||
|
*/
|
||||||
|
static void findMinEnclosingTriangle(cv::InputArray points,
|
||||||
|
CV_OUT cv::OutputArray triangle, CV_OUT double& area) {
|
||||||
std::vector<cv::Point2f> resultingTriangle;
|
std::vector<cv::Point2f> resultingTriangle;
|
||||||
|
|
||||||
CV_Assert(triangle.depth() == CV_32F);
|
CV_Assert(triangle.depth() == CV_32F);
|
||||||
@ -280,10 +307,6 @@ void cv::minEnclosingTriangle(cv::InputArray points,
|
|||||||
copyResultingTriangle(resultingTriangle, triangle);
|
copyResultingTriangle(resultingTriangle, triangle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////// Helper functions definition //////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
//! Create the convex hull of the given set of points
|
//! Create the convex hull of the given set of points
|
||||||
/*!
|
/*!
|
||||||
* @param points The provided set of points
|
* @param points The provided set of points
|
||||||
@ -319,12 +342,20 @@ static void findMinEnclosingTriangle( std::vector<cv::Point2f> &triangle, double
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! Copy resultingTriangle to the OutputArray triangle
|
//! Copy resultingTriangle to the OutputArray triangle
|
||||||
|
/*!
|
||||||
|
* @param resultingTriangle Minimum area triangle enclosing the given polygon found by the algorithm
|
||||||
|
* @param triangle Minimum area triangle enclosing the given polygon return to the user
|
||||||
|
*/
|
||||||
static void copyResultingTriangle(const std::vector<cv::Point2f> &resultingTriangle,
|
static void copyResultingTriangle(const std::vector<cv::Point2f> &resultingTriangle,
|
||||||
cv::OutputArray triangle) {
|
cv::OutputArray triangle) {
|
||||||
cv::Mat(resultingTriangle).convertTo(triangle, triangle.fixedType() ? triangle.type() : CV_32F);
|
cv::Mat(resultingTriangle).convertTo(triangle, triangle.fixedType() ? triangle.type() : CV_32F);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Initialisation function
|
//! Initialisation function
|
||||||
|
/*!
|
||||||
|
* @param triangle Minimum area triangle enclosing the given polygon
|
||||||
|
* @param area Area of the minimum area enclosing triangle
|
||||||
|
*/
|
||||||
static void initialise(std::vector<cv::Point2f> &triangle, double &area) {
|
static void initialise(std::vector<cv::Point2f> &triangle, double &area) {
|
||||||
nrOfPoints = static_cast<unsigned int>(polygon.size());
|
nrOfPoints = static_cast<unsigned int>(polygon.size());
|
||||||
area = std::numeric_limits<double>::max();
|
area = std::numeric_limits<double>::max();
|
||||||
|
@ -44,9 +44,8 @@ int main( int /*argc*/, char** /*argv*/ )
|
|||||||
|
|
||||||
// Find the minimum area enclosing triangle
|
// Find the minimum area enclosing triangle
|
||||||
vector<Point2f> triangle;
|
vector<Point2f> triangle;
|
||||||
double area;
|
|
||||||
|
|
||||||
minEnclosingTriangle(points, triangle, area);
|
minEnclosingTriangle(points, triangle);
|
||||||
|
|
||||||
// Find the minimum area enclosing circle
|
// Find the minimum area enclosing circle
|
||||||
Point2f center, vtx[4];
|
Point2f center, vtx[4];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user