SemanticImage

一个易于使用的图像/视频滤镜集合。

如何使用

设置

1,使用 Swift Package Manager 将 SemanticImage 作为 Swift Package 添加到你的项目中。或者直接将 SemanticImage.swift 拖到你的项目中。

2,导入并初始化 SemanticImage

import SemanticImage
let semanticImage = SemanticImage()

需要 iOS 14 或更高版本

滤镜集合

图像

获取人物蒙版

let maskImage:UIImage? = semanticImage.personMaskImage(uiImage: yourUIImage)

替换人物背景

let swappedImage:UIImage? = semanticImage.swapBackgroundOfPerson(personUIImage: yourUIImage, backgroundUIImage: yourBackgroundUIImage)

模糊人物背景

let blurredPersonImage:UIImage? = semanticImage.personBlur(uiImage:UIImage, intensity:Float)
// Blur intensity: 0~100 

获取显著物体蒙版

let prominentMaskImage:UIImage? = semanticImage.saliencyMask(uiImage:image)

替换显著物体背景

let backgroundSwapImage:UIImage? = semanticImage.saliencyBlend(objectUIImage: image, backgroundUIImage: bgImage)

裁剪人脸矩形

let faceImage:UIImage? = semanticImage.faceRectangle(uiImage: image)

裁剪人体矩形

let bodyImage:UIImage? = semanticImage.humanRectangle(uiImage: image)

裁剪多个人脸矩形

let faceImages:[UIImage] = semanticImage.faceRectangles(uiImage: image)

裁剪多个人体矩形

let bodyImages:[UIImage] = semanticImage.humanRectangles(uiImage: image)

裁剪动物(猫/狗)矩形

let animalImage:UIImage? = semanticImage.animalRectangle(uiImage: image)

裁剪多个动物(猫/狗)矩形

let animalImages:[UIImage] = semanticImage.animalRectangles(uiImage: image)

裁剪并扭曲文档

let documentImage:UIImage? = semanticImage.getDocumentImage(image: image)

视频

将 CIFilter 应用于视频

guard let ciFilter = CIFilter(name: "CIEdgeWork", parameters: [kCIInputRadiusKey:3.0]) else { return }
semanticImage.ciFilterVideo(videoURL: url, ciFilter: ciFilter, { err, processedURL in
    // Handle processedURL in here.
})
// This process takes about the same time as the video playback time.

为人物视频添加虚拟背景

semanticImage.swapBackgroundOfPersonVideo(videoURL: url, backgroundUIImage: uiImage, { err, processedURL in
    // Handle processedURL in here.
})
    // This process takes about the same time as the video playback time.

为显著物体视频添加虚拟背景

semanticImage.swapBGOfSalientObjectVideo(videoURL: url, backgroundUIImage: uiImage, { err, processedURL in
    // Handle processedURL in here.
})
    // This process takes about the same time as the video playback time.

处理视频

semanticImage.applyProcessingOnVideo(videoURL: url, { ciImage in
    // Write the processing of ciImage (i.e. video frame) here.
    return newImage
}, {  err, editedURL in
   // The processed video URL is returned
})

作者

Daisuke Majima

来自日本的自由职业 iOS 程序员。

个人资料

作品

博客:Medium

联系方式: rockyshikoku@gmail.com