我正在建立一个“在洞中的脸”或“照片亭”类型的应用程序,用户的脸可以插入到现有的图像中使用人脸检测技术。通过使用人脸检测,我得到了“截断”的UIImage
人脸边界。
看下面那个人耳朵附近的脸和头发之间的锋利分界线。如何才能更好地使这种过渡顺利进行和融合在一起?我知道有一些应用程序可以“扩展”图片,是否有一种众所周知的算法可以用于这个目的?
我的问题是如何将用户的脸粘贴到这样的图像中?我正在考虑在裁剪器的脸上添加一个透明的面罩(有效地为这个脸剪出一个洞),并将用户的脸从位于切割器后面的视图中的实时摄像头上替换出来。
我担心的是,这种方法会在切出的脸的边缘周围形成锋利的边缘。我怎样才能平滑这条边缘呢?我的透明面具,而不是纯粹的阿尔法通道,应该是一个渐变,在中间的阿尔法通道为1,而外部边缘的通道较少?
如何将两幅图像混合起来,使它们之间的边界消失或变得不那么引人注目?
发布于 2012-05-03 13:53:06
您可以使用两个UIImageview加载两个PNG文件,您可以使用图像编辑应用程序保存PNG,比如Photoshop保持透明。因此,您可以避免掩码,只需使用具有渐变的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];
你应该记住,这些图像是在先入后出的基础上显示的,所以记得在照片之前加上洞。
发布于 2015-09-18 11:58:15
查看OpenCV libray。几乎所有您想要的特性通常都是用OpenCV执行的。
OpenCV是一个c++图像检测和操作库。有一个objC++包装器框架xCode。
学习关于openCV的iOS基础知识。
将OpenCV框架嵌入到xCode项目中。
将viewController的m扩展更改为mm
将viewController的h扩展更改为hpp
进口opencv2 2/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
https://stackoverflow.com/questions/10430852
复制相似问题