我正在将Opencv 2.4.5与python 2.7配合使用以跟踪视频监控中的人员。最初,我使用.avi和.mpeg视频来测试代码,现在我想使用hcv-m100c摄像机。我使用帧之间的简单差异(与每个帧比较一个初始帧)来识别运动中的对象,它与我拥有的.avi和.mpeg视频效果很好,但是当我使用相机时,效果非常差因为我的视频中出现了很多噪音和污点。我以为问题出在我的相机上,但是我用同一台相机制作了一个.avi视频,并用我的代码测试了该视频,效果很好。
现在,我正在使用cv2.BackgroundSubtractorMOG,但问题仍然存在。
因此,我认为使用相机时需要进行预处理
最佳答案
仅出于完整性考虑:
解决方案概念:
可能您可以用类似ffmpeg的格式stream和video camera进行转换,然后使用OpenCV读取网络流。而是使用VLC流式传输可能会更容易。
解决方案详细信息:
VLC流代码(Shell):
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
OpenCV代码(Python):
cap=cv2.VideoCapture("rtsp://:8554/output.mpeg")