1

顔検出技術を使用して、ユーザーの顔を既存の画像に挿入できる「穴の中の顔」または「写真ブース」のようなアプリを構築しています。UIImage顔検出を使用して、「切り抜き」の顔の境界を取得しています。

下の男の耳の近くの顔と髪の間の鋭い境界を見てください. このような移行をどのように滑らかにし、よりよくブレンドすることができるでしょうか? 写真を「拡大」するアプリがあることは知っていますが、この目的で使用できるよく知られているアルゴリズムはありますか?

顔検出例

私の質問は、ユーザーの顔をそのような画像に貼り付ける方法ですか? カットアウトの顔に透明なマスクを追加し (効果的に顔の穴を切り取ります)、カットアウトの背後にあるビューからのライブ カメラ フィードからユーザーの顔を置き換えることを考えていました。

私が懸念しているのは、この方法では、切り取り面のエッジの周りに鋭いエッジが作成されることです。このエッジを滑らかにするにはどうすればよいですか? 透明なマスクは、純粋なアルファ チャネルではなく、中央に 1 のアルファ チャネルがあり、外側のエッジが小さいグラデーションにする必要がありますか?

2 つの画像をブレンドして、それらの境界を消したり、目立たなくしたりするにはどうすればよいですか?

4

2 に答える 2

0

2つのPNGファイルがロードされた2つのUIImageviewを使用でき、透明度を保持するPhotoshopなどの画像編集アプリでPNGを保存できます。したがって、マスクを回避することができます。必要に応じて、透明度で終わるグラデーションのPNGを使用するだけです。

UIImageviewを追加するときは、次のことを覚えておいてください。

UIImageView* myPortrait = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"myPortrait" ofType:@"png"]]];
myPortrait.frame = CGRectMake(50, 50, 80, 100);
[self.view addSubview:myPortrait];
UIImageView* photoWithHole = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"photoWithHole" ofType:@"png"]]];
photoWithHole.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:photoWithHole];

画像は先着順で表示されるため、穴のある写真の前にポートレートを追加することを忘れないでください。

于 2012-05-03T13:53:06.890 に答える
0

OpenCV ライブラリを確認してください。あなたが望むほとんどすべての機能は、一般に OpenCV で実行されます。

OpenCV は、C++ の画像検出および操作ライブラリです。objC++ ラッパー フレームワーク xCode があります。

iOS の openCV の基礎を学びます。

OpenCV フレームワークを xCode プロジェクトに組み込みます。

viewController の m 拡張子を mm に変更します

viewController の h 拡張子を hpp に変更します

import opencv2/opencv.hpp ... ... ... ...

おそらく確認する必要があること: http://docs.opencv.org/master/d7/d8b/tutorial_py_face_detection.html#gsc.tab=0

http://www.bogotobogo.com/python/OpenCV_Python/python_opencv3_Image_Object_Detection_Face_Detection_Haar_Cascade_Classifiers.php

https://www.youtube.com/watch?v=Gdy3fLS_fZA

または、CoreImage を使用することもできます

https://maniacdev.com/2011/11/tutorial-easy-face-detection-with-core-image-in-ios-5

于 2015-09-18T11:58:15.000 に答える