2
0

iPhoneで人物を異なる背景に貼り付ける

Last updated at Posted at 2024-01-10

動画合成/画像合成でさまざまなイメージを作れる

1.jpg
matte.jpg
スクリーンショット 2024-01-11 6.24.24.png

iPhoneやiPadのアプリで高速に実行できるので、

・旅行イメージの提案
・広告画像の作成
・商品使用イメージ
・動画のクロマキー合成

などに使える。

コード

以下のコードだけで人物のマット画像がとれる。

import Vision
var request = VNGeneratePersonSegmentationRequest()
request.qualityLevel = .accurate // .balanced .fast
let handler = VNImageRequestHandler(ciImage: inputCIImage, options: [:])
do {
    try handler.perform([request])
    guard let result = request.results?.first as? VNPixelBufferObservation else { return }
} catch let error {
        print(error)
}

4.jpgmatte1.jpg

これを背景画像と合成するコードは以下。

let outputCIImage = CIImage(cvPixelBuffer: result.pixelBuffer).resize(as:inputCIImage.extent.size)
guard let backgroundImage = UIImage(named: "cube"),
let bgCIImage = CIImage(image:backgroundImage)?.resizeBackGround(as: inputCIImage.extent.size) else { fatalError() }
guard let compositedCIImage = CIFilter(name: "CIBlendWithMask", parameters: [
                kCIInputImageKey: ciImage,
                kCIInputBackgroundImageKey:bgCIImage,
                kCIInputMaskImageKey:outputCIImage ])?.outputImage else {fatalError("Image processing failed.")}
let context = CIContext()
guard let safeCGImageFinal = context.createCGImage(compositedCIImage, from: compositedCIImage.extent) else {fatalError("Image processing failed.")}
let outputImage = UIImage(cgImage: safeCGImageFinal)

cube.jpgスクリーンショット 2024-01-11 7.11.45.png

🐣


フリーランスエンジニアです。
AIについて色々記事を書いていますのでよかったらプロフィールを見てみてください。

もし以下のようなご要望をお持ちでしたらお気軽にご相談ください。
AIサービスを開発したい、ビジネスにAIを組み込んで効率化したい、AIを使ったスマホアプリを開発したい、
ARを使ったアプリケーションを作りたい、スマホアプリを作りたいけどどこに相談したらいいかわからない…

いずれも中間コストを省いたリーズナブルな価格でお請けできます。

お仕事のご相談はこちらまで
rockyshikoku@gmail.com

機械学習やAR技術を使ったアプリケーションを作っています。
機械学習/AR関連の情報を発信しています。

Twitter
Medium
GitHub

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0