Python 网络摄像头帧中的噪音&x2B;Opencv

Python 网络摄像头帧中的噪音&x2B;Opencv,python,opencv,webcam,ip-camera,surveillance,Python,Opencv,Webcam,Ip Camera,Surveillance,我正在使用Opencv 2.4.5和python 2.7来跟踪视频监控中的人。起初我使用.avi和.mpeg视频来测试我的代码,现在我想使用hcv-m100c摄像机。我使用帧之间的简单差异(与每帧比较的初始帧)来识别运动中的对象,它与我拥有的.avi和.mpeg视频效果非常好,但是当我使用相机时,结果非常糟糕,因为我的视频中出现了大量噪声和污点。我以为问题出在我的相机上,但我用同一台相机制作了一个.avi视频,我用我的代码测试了这个视频,效果很好。 现在,我正在使用cv2.BackgroundS

我正在使用Opencv 2.4.5和python 2.7来跟踪视频监控中的人。起初我使用.avi和.mpeg视频来测试我的代码,现在我想使用hcv-m100c摄像机。我使用帧之间的简单差异(与每帧比较的初始帧)来识别运动中的对象,它与我拥有的.avi和.mpeg视频效果非常好,但是当我使用相机时,结果非常糟糕,因为我的视频中出现了大量噪声和污点。我以为问题出在我的相机上,但我用同一台相机制作了一个.avi视频,我用我的代码测试了这个视频,效果很好。 现在,我正在使用cv2.BackgroundSubtractorMOG,但问题仍然存在。 因此,我想我在使用相机时需要做一个预处理,只是为了完整:

解决方案概念:

可能您可以使用ffmpeg之类的东西,它也可以进行转码,然后使用OpenCV读取网络流。使用流式传输可能更容易

解决方案详细信息:

VLC流代码(Shell):

OpenCV代码(Python):


这是因为视频编解码器使用过滤器来平滑帧之间的变化,从而可以消除噪声吗?我已经尝试过高斯平滑,同样的问题可能你也可以使用ffmpeg这样的东西,它也可以进行转码,然后使用OpenCV来读取。使用流可能更容易。我正在使用此函数从相机捕获视频,
cap=cv2。VideoCapture(0)
那么,在这种情况下如何使用VLC流呢?先谢谢你
vlc "http://192.168.180.60:82/videostream.cgi?user=admin&pwd=" --sout "#transcode{vcodec=mp2v,vb=800,scale=1,acodec=mpga,ab=128,channels=2,samplerate=??44100}:duplicate{dst=rtp{sdp=rtsp://:8554/output.mpeg},dst=display}" --sout-keep
cap=cv2.VideoCapture("rtsp://:8554/output.mpeg")