簡體   English   中英

無法使AVPortraitEffectsMatte代碼正常工作

[英]Can't get AVPortraitEffectsMatte code to work

我正在嘗試遵循Apple提供的一些代碼,以使用iOS 12中引入的一些新類和對象從人像模式照片中檢索圖像蒙版。代碼在這里:

https://developer.apple.com/documentation/avfoundation/avportraiteffectsmatte/extracting_portrait_effects_matte_image_data_from_a_photo

func portraitEffectsMatteImageAt(_ path: String) -> UIImage? {
    let bundlePath = Bundle.main.bundlePath

    // Check that the image at given path contains auxiliary PEM data:
    guard let fileURL = NSURL(fileURLWithPath: bundlePath).appendingPathComponent(path),
    let source = CGImageSourceCreateWithURL(fileURL as CFURL, nil),
    let auxiliaryInfoDict = CGImageSourceCopyAuxiliaryDataInfoAtIndex(source, 0, kCGImageAuxiliaryDataTypePortraitEffectsMatte) as? [AnyHashable: Any],
    let matteData = try? AVPortraitEffectsMatte(fromDictionaryRepresentation: auxiliaryInfoDict),
    let matteCIImage = CIImage(portaitEffectsMatte: matteData)
    else {
        return nil
    }
    return UIImage(ciImage: matteCIImage)
}

我唯一的變化是基本上將fileURL修改為在我的捆綁包中使用jpg。

guard let fileURL = Bundle.main.url(forResource: "custom00", withExtension: "jpg")

但是,單步執行代碼使我看到auxiliaryInfoDict的分配為nil 我從以前的項目中導入了這些JPG,該項目使用了較舊的技術來創建深度蒙版( https://www.raywenderlich.com/314-image-depth-maps-tutorial-for-ios-getting-started ),因此jpg文件應該沒事的。

有人有工作示例項目嗎? 謝謝

僅當照片中保存了肖像效果遮罩時,才能加載照片中保存的肖像效果遮罩。 這聽起來像是重言式 ,所以讓我擴展一下:

  • 如果您使用AVCapturePhotoOutput自己捕獲圖像,則在且僅在以下情況下,才能獲得啞光肖像效果:

    • 當前捕獲設備和配置上可用/受支持。 縱向效果需要深度捕捉,因此您需要選擇后置雙攝像頭或前置TrueDepth攝像頭(在配備如此的設備上)並啟用深度傳送

    • 您要求它。 拍攝前在照片設置中設置isPortraitEffectsMatteDeliveryEnabled

    • 該設備可以生成一個。 人像效果遮罩來自經過訓練可識別人臉特征的機器學習模型。 如果您的照片中沒有可識別的人,那么您就不會有遮罩。 (對不起,寵物愛好者。)

    • 您不會選擇不保存它。 您可以關閉embedsPortraitEffectsMatteInPhoto ,或使用AVCapturePhotoFileDataRepresentationCustomizer在捕獲后和保存前替換/刪除照片的遮罩(或其他元素)。 顯然,如果您想要遮罩,就不要擺脫它。

  • 由使用相機捕獲API的任何第三方應用程序保存的圖像也是如此。 (也就是說,如果其他應用遵循上述步驟,則可以從其他應用程序保存的圖像中讀取遮罩,與嘗試使用遮罩捕獲圖像時一樣。)請參閱配置相機捕捉以收集人像效果遮罩。

  • 如果您使用Apple的內置Camera應用程序捕獲了照片,則該照片必須是在iOS 12上捕獲的人像模式照片(后置雙攝像頭或前置TrueDepth攝像頭)。

該API似乎適用於前置攝像頭照片,但是尚不適用於前置攝像頭照片。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM