日期:2014-05-18  浏览次数:21008 次

【技术讨论】如何改变摄像头图像的背景或使背景色透明?高分求救!!!
假如某人站在蓝色背景前做一些动作,如何使摄像头图像背景色(此处指蓝色)透明呢?

我主要是想把摄像头图像中的物体(此处指人物)叠加到其他图像或视频中去,有办法实现这个功能吗?

有无类似的程序啊,C#或VB.Net均可。

------解决方案--------------------
有难度,关注
------解决方案--------------------
笔直的一道弯
------解决方案--------------------
A sample processing is like follows:

C# code

1. color predicate                  (mark those color near to (0,0,255))
2. opening                          (also called Dilation)
3. closing                          (also called Erosion)
4. select the biggest segment(s)
5. mark the selected segments(s) as transparent

------解决方案--------------------
探讨
有难度,关注

------解决方案--------------------
这东西还没搞过呢!!!
关注!!
------解决方案--------------------
I never expect to use C# for image prossing and I have no idea about free source code.
But in C++ there are lots of open source codes in image processing.

opening and closing are easy, and easy to implement (I can describe once I have a Chinese IME).
The segmentation is a little bit difficult (but there is a two-pass algorithm).
------解决方案--------------------
探讨
有难度,关注

------解决方案--------------------
楼主,我现在要做的视频采集卡二次开发和你的问题一样,有空大家交流交流!~我QQ:78001114 E-Mail:ivan821019@qq.com
------解决方案--------------------
探讨
有难度,关注

------解决方案--------------------
下面的图大致解释了简单的处理过程,更高级的处理就不是在这里讨论的了。

第一图示原图,背景并不是太单一。
第二图是根据颜色相似来划分背景和前景,前景用白色表示,背景用黑色表示。我们可以看到有一些误判。
第三图是第二图作了膨胀(Dilation)然后做了腐蚀(Erosion),一些细缝已经被融合了,但外轮廓并没有变形。


膨胀(Dilation)和腐蚀(Erosion)的算法可以搜索得到,不过大部分数学描述都比较不好理解。
其实它的简单例子一讲就明白(复杂的算子我们就不管了)。
假设现在前景点是白色,背景是黑色(图二)。

膨胀就是把所有离白点距离不超过3个像素的点全部涂成白色。这样一来前景就胀了一圈,内部的缝隙也被挤没了。
腐蚀就是把所有离黑点距离不超过3个像素的点全部涂成黑色。这样一来前景就瘦回去了。

3个像素是我举的例子,可以是5个像素,6个像素等等。距离可以是欧几里德距离(sqrt(x*x + y*y)),也可以是曼哈顿距离(abs(x)+abs(y))。
把前景蒙板提取出来后,就可以根据蒙板来做图像混合了。

------解决方案--------------------
请问一下lz是不是用vfw技术开发的,捕获图片后加工一下不可以吗?
------解决方案--------------------
ls所说的方法不知道处理摄像头捕捉的视频图像的速度如何?
With C++, VGA(640 * 480), 24bit color, more than 30 frames/second
------解决方案--------------------
可不可以用现在的摄像头拍下图像,然后检测背景的蓝色的实际的RGB值
然后再将该16进制值设为透明色
------解决方案--------------------
探讨
可不可以用现在的摄像头拍下图像,然后检测背景的蓝色的实际的RGB值
然后再将该16进制值设为透明色

------解决方案--------------------
一帧一帧的取。把每一帧的颜色跟蓝色最相似的设置为透明试试。
------解决方案--------------------
探讨
这东西还没搞过呢!!!
关注!!

------解决方案--------------------
用OpenCV啊,
------解决方案--------------------
帮你顶。。。
------解决方案--------------------