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

Image processing 如何以编程方式检测图像的背景?,image-processing,image-manipulation,Image Processing,Image Manipulation,我需要开发一个软件,从背景为素色的照片中选择一张脸(像电影中的绿色) 然后,我们要用另一个背景图像组成选择,这一部分很容易使用许多库。但我不知道我该怎么做选择?你能提供一些链接或库进行调查吗?我可以用我选择的任何语言来做这个项目,所以欢迎使用任何语言的示例或链接。好的,你尝试做的就是色度键。就像你说的,它在蓝/绿屏幕的电影中使用了很多。在windows上,它实际上很容易做到,因为它作为GDI+的一部分内置在windows中(或者在C#上,我认为它只是被称为图形类) 我手头没有任何示例代码,但过程

我需要开发一个软件,从背景为素色的照片中选择一张脸(像电影中的绿色)


然后,我们要用另一个背景图像组成选择,这一部分很容易使用许多库。但我不知道我该怎么做选择?你能提供一些链接或库进行调查吗?我可以用我选择的任何语言来做这个项目,所以欢迎使用任何语言的示例或链接。

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

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

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


代码中有更多的内容,但从概念上讲,这就是它的全部。

这可能是一个比RGB更容易在其他空间工作的领域,比如HSV


我还想看看OpenCV库。

从概念上讲,这其实很简单-只要将绿色背景像素转换为0 alpha值,然后将图像绘制到您想要的背景图像上即可。实际上,边界的边缘可能会变得有点棘手。你能再描述一下你正在使用的技术吗?IE,是Windows、C++等Gravestb,谢谢您的回复。我可以在windows中使用任何语言或平台,我想使用Java或C。你能分享一个链接或例子吗?我想做一些研究,但我在谷歌上找不到太多的信息。