我尝试创建实时头发颜色面膜IOS应用程序。我使用UIGraphicsGetImageFromCurrentImageContext()
函数来合并视频中的蒙版和背景。它可以工作,但图像质量不够好。我想更改我的代码以使用blendKernel.apply(foreground: maskCI!, background: backgroundCI!)
函数。在这种情况下,蒙版和背景图像的大小和位置不匹配。蒙版图像显示在背景图像的右下角。我的背景图像大小是1080x1080,遮罩图像是224x224。你能建议我如何重叠蒙版和背景吗?下面是我的代码:
class IntegrateViewAndMask {
var blendKernel: CIBlendKernel { return .softLight }
func mergeMaskAndBackground(mask: UIImage, background: CVPixelBuffer, size: Int) -> UIImage? {
// Merge two images
// let sizeImage = CGSize(width: size, height: size)
// UIGraphicsBeginImageContext(sizeImage)
// let areaSize = CGRect(x: 0, y: 0, width: sizeImage.width, height: sizeImage.height)
// background
var background = UIImage(pixelBuffer: background)
// crop image to square 1080 x 1080
background = cropImageToSquare(image:background!)
// background?.draw(in: areaSize)
// mask
// mask.draw(in: areaSize)
let backgroundCI = CIImage(image: background!)
let maskCI = CIImage(image: mask)
let trialImage = blendKernel.apply(foreground: maskCI!, background: backgroundCI!)
let trialImageUI = UIImage(ciImage:trialImage!)
// let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
// UIGraphicsEndImageContext()
return trialImageUI
发布于 2020-06-15 03:46:55
我刚刚找到了答案,并尝试了一下。请参阅下面的链接。按照建议,我将UIimage的大小调整为边界正方形,然后转换为CIImage。所以它现在可以完美地工作了。
https://stackoverflow.com/questions/62376382
复制相似问题