如何在opencv中使用色度键控开发背景去除

时间:2013-02-18 14:48:30

标签: opencv chromakey

我需要开发一种算法来从前景图像中删除背景。我想用色度键控。这将在实时摄像机流上完成,我需要在C ++中使用OpenCV来完成。

我认为算法类似于:

  1. 从网络摄像头捕获帧到矩阵
  2. 计算3d rgb空间图
  3. 某个值附近的点,例如(10,255,10)为绿色背景。
  4. 将绿色区域周围的所有点转换为0。
  5. 其余为1。
  6. 将其与原始图像(卷积)相乘
  7. 应该摆脱背景。
  8. 我想帮助一种方法从前景图像中删除纯色背景,而不删除前景图像中的颜色。
    有没有像特殊类型的裁剪功能来删除背景?

2 个答案:

答案 0 :(得分:0)

我正在使用Python的OpenCV。假设您遵循基本教程并从相机获取帧并具有背景图像。单行代码应该使用numpy的where函数。

outputImage = np.where(frame == (10,255,10), background, frame)

现在,outputImage包含原始帧,它不是绿色,而背景图像是绿色。如你所说,你应该使用一些容忍度。

答案 1 :(得分:0)

我在C ++中使用OpenCV,但我不完全明白你想要什么,@ Seif(抱歉我的英语不好)。你想用前景的颜色替换背景中的绿色吗?你仍然坚持“将它与原始图像相乘(卷积)”? 你的算法是非常真实的,但是你必须把绿色放到角度,圆圈......并实现它们,有很多算法可以做到(我这样做),否则,我认为除了改变任何绿色之外它是不可能的像素到前景的相似像素。