Применение границы к форме изображения

В моем приложении у меня разные образы разных форм. Как дерево, облако. (Образец прилагается). Я хочу добавить границу к этим формам программно. Например, если изображение имеет дерево, тогда необходимо выделить форму дерева. Я не могу использовать calayer, поскольку он применит границу к UIImageView. Может ли кто-нибудь вести меня, как это сделать?

образец изображения

Простой вариант состоит в том, чтобы нарисовать изображение дважды, сначала с небольшой шкалой, применяемой для небольшого увеличения изображения. Маскирование, если изображения не прозрачны (но черно-белые).

Я просто сделал то же самое, но с белой рамкой. Я создал маску с белым телом и черным штрихом 4px снаружи, чтобы дать мне единую границу, которую я хочу вокруг своего целевого изображения. В followng используются фильтры Core Image для маскировки сплошного цветного фона (для использования в качестве границы), а затем для маскировки и компоновки целевого изображения.

// The two-tone mask image UIImage *maskImage = [UIImage imageNamed: @"Mask"]; // Create a filler image of whatever color we want the border to be (in my case white) UIGraphicsBeginImageContextWithOptions(maskImage.size, NO, maskImage.scale); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, UIColor.whiteColor.CGColor); CGContextFillRect(context, CGRectMake(0.f, 0.f, maskImage.size.width, maskImage.size.height)); UIImage *whiteImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // Use CoreImage to mask the colored background to the mask (the entire opaque region of the mask) CIContext *ciContext = [CIContext contextWithOptions: nil]; CIFilter *filter = [CIFilter filterWithName: @"CIBlendWithAlphaMask"]; [filter setValue: [CIImage imageWithCGImage: whiteImage.CGImage] forKey: kCIInputImageKey]; [filter setValue: [CIImage imageWithCGImage: maskImage.CGImage] forKey: kCIInputMaskImageKey]; CIImage *whiteBackground = filter.outputImage; // scale the target image to the size of the mask (accounting for image scale) // ** Uses NYXImageKit image = [image scaleToSize: CGSizeMake(maskImage.size.width * maskImage.scale, maskImage.size.height * maskImage.scale) usingMode: NYXResizeModeAspectFill]; // finally use Core Image to create our image using the masked white from above for our border and the inner (white) area of our mask image to mask the target image before compositing filter = [CIFilter filterWithName: @"CIBlendWithMask"]; [filter setValue: [CIImage imageWithCGImage: image.CGImage] forKey: kCIInputImageKey]; [filter setValue: whiteBackground forKey: kCIInputBackgroundImageKey]; [filter setValue: [CIImage imageWithCGImage: maskImage.CGImage] forKey: kCIInputMaskImageKey]; image = [UIImage imageWithCGImage: [ciContext createCGImage: filter.outputImage fromRect: [filter.outputImage extent]]]; 

Вы можете применить границу к объектам, присутствующим на изображении, с использованием рамки OpenCV.

Проверьте эту ссылку. Здесь ребра обнаруживаются с изображением, и к нему применяется граница. Надеюсь, это даст точную идею, которую вы хотите.

https://github.com/BloodAxe/OpenCV-Tutorial

  • Загрузка изображения Safari iOS 6 - Ориентация неправильная
  • Анимация многократного смешивания двух изображений
  • Фокус расширения
  • iOS. Некоторые изображения не отображаются на экране запуска.
  • Настроить аннотацию MkMapView
  • библиотека с открытым исходным кодом для создания панорамных фотографий на iOS?
  • Зеленый экран / цветной ключ iOS
  • iOS: выделение непрозрачных частей частично прозрачного изображения
  • Библиотека для сжатия PNG во время выполнения на iOS
  • Image-picker отображает несколько изображений, таких как коллаж без памяти
  • Загрузка нескольких файлов с помощью массива параметров с использованием Alamofire
  • Давайте будем гением компьютера.