mirror of
https://github.com/opencv/opencv.git
synced 2025-06-12 20:42:53 +08:00
Merge pull request #7790 from sovrasov:convexity_defects_enable_small_hulls
This commit is contained in:
commit
7a3b5b308c
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user