我如何以编程方式检测图像的背景?

时间:2010-09-07 20:44:01

标签: image-processing image-manipulation

我需要开发一种软​​件,从背景为纯色的照片中选择一张脸(绿色,就像在电影中一样)。

然后我们想要用另一个背景图像来组合这个选择,这部分很容易用很多库。但我不知道如何选择呢?你能给一些链接或图书馆进行调查吗?我可以用我选择的任何语言来完成这个项目,所以欢迎使用任何语言的示例或链接。

2 个答案:

答案 0 :(得分:2)

好的,你要做的是称为色度键。就像你说的那样,它在电影中使用了很多蓝色/绿色屏幕。在Windows上它实际上很容易做到,因为它作为GDI +的一部分内置在窗口中(或者在C#上,我认为它只是称为Graphics类)。

我没有任何示例代码方便,但过程非常简单:

使用GDI +,您可以创建前景图像的位图对象(具有绿色背景的对象)。然后创建一个ImageAttributes对象。使用ImageAttribute的对象的SetColorKey()方法指定要用作背景颜色的颜色或颜色范围。最后,在目标位图上绘制该位图对象,GDI +将绘制它,就好像背景颜色是透明的一样。

在代码中还有更多内容,但在概念方面,这就是它的所有内容。

答案 1 :(得分:1)

这可能是一个比RGB更容易在其他空间工作的区域 - 例如HSV。

我还会看一下OpenCV库。