我需要开发一种算法来从前景图像中删除背景。我想使用色度键控。这将在实时摄像机流上完成,我需要使用 C++ 中的 OpenCV 来完成。
我认为的算法是这样的:
- 将网络摄像头的帧捕获到矩阵中
- 计算 3d rgb 空间图
- 围绕某个值的点,例如绿色背景的 (10,255,10)。
- 将绿色区域周围的所有点转换为 0。
- 其余为 1。
- 将其与原始图像相乘(卷积)
- 应该摆脱背景。
我想要一些关于从前景图像中删除纯色背景而不从前景图像中删除颜色的方法的帮助。
是否有一种特殊类型的裁剪功能来去除背景?
我在 C++ 中使用 OpenCV,但我不完全理解你想要什么,@Seif(对不起我的英语不好)。你想用前景的颜色替换背景中的绿色,并且你被困在“与原始图像相乘(卷积)”吗?您的算法非常正确,但是您必须将绿色设置为角度,圆形...并实现它们,有很多算法可以做到(我正在这样做),否则,我认为除了更改任何绿色之外都是不可能的像素到前景的类似像素。
我正在使用 Python 中的 OpenCV。假设您遵循了基本教程,并拥有来自相机的框架和背景图像。一行代码应该可以使用 numpy 的where函数来解决问题。
outputImage = np.where(frame == (10,255,10), background, frame)
现在 outputImage 包含不是绿色的原始帧和绿色的背景图像。正如你所说,你应该使用一些宽容。