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