1
CIDetector无法检测到最大的矩形。左图像是原始图像,右图像是矩形检测图像。它没有检测到完整的矩形。我该如何解决它?为什么CIDetector无法检测到最大的矩形?
- (CIDetector *)highAccuracyRectangleDetector
{
static CIDetector *detector = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^
{
detector = [CIDetector detectorOfType:CIDetectorTypeRectangle
context:nil options:@{CIDetectorAccuracy : CIDetectorAccuracyHigh}];
});
return detector;
}
- (CIRectangleFeature *)_biggestRectangleInRectangles:(NSArray
*)rectangles
{
if (![rectangles count]) return nil;
float halfPerimiterValue = 0;
CIRectangleFeature *biggestRectangle = [rectangles firstObject];
for (CIRectangleFeature *rect in rectangles)
{
CGPoint p1 = rect.topLeft;
CGPoint p2 = rect.topRight;
CGFloat width = hypotf(p2.x - p1.x, p2.y - p1.y);
CGPoint p3 = rect.topLeft;
CGPoint p4 = rect.bottomLeft;
CGFloat height = hypotf(p4.x - p3.x, p4.y - p3.y);
CGFloat currentHalfPerimiterValue = (height)+(width);
_RectHeight = height;
_RectWidth = width;
if (halfPerimiterValue < currentHalfPerimiterValue)
{
halfPerimiterValue = currentHalfPerimiterValue;
biggestRectangle = rect;
NSLog(@"height %@", @(height));
NSLog(@"width %@", @(width));
}
}
return biggestRectangle;
}