这是我需要实现的:
-
从相机或图库中拍摄图像
-
从图像中删除背景并保存
-
背景应为黑色或白色
-
还需要删除背景阴影
Result Example:
Original Image
Result Image
This is what i have tried:
CGFloat colorMasking[6]={222,255,222,255,222,255};
CGImageRef imageRef = CGImageCreateWithMaskingColors([IMG CGImage], colorMasking);
UIImage *resultThumbImage = [UIImage imageWithCGImage:imageRef scale:ThumbImage.scale orientation:IMG.imageOrientation];
它唯一的工作在白色背景 . 它不是更有效 . 我需要达到我在上面的图像中放置的确切结果 .
我还提到了一些参考文献:
iOS how to mask the image background color
How to remove the background of image in iphone app?
Changing the background color of a captured image from camera to white
有人可以帮我实现这个目标吗?
任何参考或将受到高度赞赏 .
提前致谢 .
2 回答
通常,根据经验,背景颜色与所有其他颜色的差异越大,将图像分割为前景和背景就越容易 . 在这种情况下,正如@Chris已经建议的那样,可以使用简单的色度键实现 . 下面是我在Wikipedia上描述的键控的快速实现(它用C编写,但将其转换为Objective-C应该很简单):
可以在Github Gist中找到完整的代码示例 .
不幸的是,你的例子不遵循这个经验法则 . 由于前景和背景的强度不同,因此很难(甚至不可能)找到一组全局参数以实现良好的分离:
tInner=50
,tOuter=90
)tInner=100
,_tOuter=170
)因此,如果您无法更改图像的背景,则需要采用更复杂的方法 . 但是,快速简单的示例实现有点超出范围,但您可能希望查看image segmentation和alpha matting的相关区域 .
我认为你需要使用一个抠像 - 虽然你选择黑色我认为它应该工作 .
一个快速谷歌想出了this