Commit 7a3b5b30 authored by Alexander Alekhin's avatar Alexander Alekhin

Merge pull request #7790 from sovrasov:convexity_defects_enable_small_hulls

parents fbf2383d 12383a12
...@@ -280,11 +280,16 @@ void convexityDefects( InputArray _points, InputArray _hull, OutputArray _defect ...@@ -280,11 +280,16 @@ void convexityDefects( InputArray _points, InputArray _hull, OutputArray _defect
Mat hull = _hull.getMat(); Mat hull = _hull.getMat();
int hpoints = hull.checkVector(1, CV_32S); int hpoints = hull.checkVector(1, CV_32S);
CV_Assert( hpoints > 2 ); CV_Assert( hpoints > 0 );
const Point* ptr = points.ptr<Point>(); const Point* ptr = points.ptr<Point>();
const int* hptr = hull.ptr<int>(); const int* hptr = hull.ptr<int>();
std::vector<Vec4i> defects; std::vector<Vec4i> defects;
if ( hpoints < 3 ) //if hull consists of one or two points, contour is always convex
{
_defects.release();
return;
}
// 1. recognize co-orientation of the contour and its hull // 1. recognize co-orientation of the contour and its hull
bool rev_orientation = ((hptr[1] > hptr[0]) + (hptr[2] > hptr[1]) + (hptr[0] > hptr[2])) != 2; bool rev_orientation = ((hptr[1] > hptr[0]) + (hptr[2] > hptr[1]) + (hptr[0] > hptr[2])) != 2;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment