gpt4 book ai didi

ios - 使用 CoreImage 检测和替换图像中的白色边框?

转载 作者:行者123 更新时间:2023-12-01 19:39:02 24 4
gpt4 key购买 nike

想象一下,你有几百张方形图片,比如专辑封面

enter image description here



一些有白色边框

enter image description here



注意 10px 左右的边框。

我正要写一些简单的光栅代码来检测和删除这样的边界——简单地说,用灰色填充它们。

但是:这可以以某种方式通过核心图像一举完成吗?

最佳答案

我认为您可以尝试使用 CIDetector 来检测最大的矩形。这不是一个通用的解决方案,因为此解决方案不适用于具有大矩形的图像,但在您的示例中效果很好:

- (CIImage*)processImage:(CIImage*)im
{
CIContext* context = [CIContext contextWithOptions:nil];
CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeRectangle context:context options:@{CIDetectorAspectRatio : @(1.0),
CIDetectorMinFeatureSize: @(180.0 / 225.0)}];
NSArray<CIRectangleFeature*>* rectangles = (NSArray<CIRectangleFeature*>*)[detector featuresInImage:im];

CIRectangleFeature* maxSizeRectangle = [rectangles firstObject];
for (CIRectangleFeature* feature in rectangles)
{
if (CGRectGetWidth(maxSizeRectangle.bounds) * CGRectGetHeight(maxSizeRectangle.bounds) < CGRectGetWidth(feature.bounds) * CGRectGetHeight(feature.bounds))
{
maxSizeRectangle = feature;
}
}

CIImage* result = im;
if (maxSizeRectangle)
{
result = [im imageByCroppingToRect:maxSizeRectangle.bounds];
}

return result;
}

主要思想在于检测器的选项(在 CIDetectorMinFeatureSize 和 CIDetectorMinFeatureSize 中),如果 minFeatureSize 太小,您会发现错误的矩形。
该代码适用于您附加的示例(图像周围的黑线是 ImageView 的背景):
result

关于ios - 使用 CoreImage 检测和替换图像中的白色边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58089079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com