首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Swift中更改作为blendKernel.apply函数输入的CIImage掩码的大小

如何在Swift中更改作为blendKernel.apply函数输入的CIImage掩码的大小
EN

Stack Overflow用户
提问于 2020-06-15 02:07:13
回答 1查看 94关注 0票数 0

我尝试创建实时头发颜色面膜IOS应用程序。我使用UIGraphicsGetImageFromCurrentImageContext()函数来合并视频中的蒙版和背景。它可以工作,但图像质量不够好。我想更改我的代码以使用blendKernel.apply(foreground: maskCI!, background: backgroundCI!)函数。在这种情况下,蒙版和背景图像的大小和位置不匹配。蒙版图像显示在背景图像的右下角。我的背景图像大小是1080x1080,遮罩图像是224x224。你能建议我如何重叠蒙版和背景吗?下面是我的代码:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-15 03:46:55

我刚刚找到了答案,并尝试了一下。请参阅下面的链接。按照建议,我将UIimage的大小调整为边界正方形,然后转换为CIImage。所以它现在可以完美地工作了。

CIImage extent in pixels or points?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62376382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档