2013-06-24 4 views
0

Я использую Opencv 2.4.5 с python 2.7 для отслеживания людей в видеонаблюдении. В начале я использовал видео .avi и .mpeg для тестирования своего кода, теперь я хочу использовать камеру hcv-m100c. Я использую простое различие между кадрами (исходный кадр по сравнению с каждым кадром), чтобы идентифицировать объекты в движении. Он отлично работает с видео .avi и .mpeg, которые у меня есть, но когда я пользуюсь камерой, результаты настолько плохи потому что в моем видео появляется много шума и пятен. Я думал, что проблема связана с моей камерой, но я сделал видео .avi с той же камерой, и я тестировал это видео с помощью своего кода, и он отлично работает. Теперь я использую cv2.BackgroundSubtractorMOG, но проблема все еще существует. Так что, я думаю, что нужно сделать предварительную обработку, когда я использую камерушум в кадрах веб-камеры Python + Opencv

+0

Это потому, что видео кодеки используют фильтры для сглаживания изменений между кадрами и чтобы можно было удалить шум? – dilbert

+0

Я пробовал это с Gaussian Smoothing, той же проблемой –

+0

Возможно, вы могли бы [поток] (http://ffmpeg.org/trac/ffmpeg/wiki/Streaming%20media%20with%20ffserver) [видео камера] (http: //ffmpeg.org/trac/ffmpeg/wiki/How%20to%20capture%20a%20webcam%20input) с чем-то вроде ffmpeg, который также может транскодировать, а затем использовать OpenCV для чтения [сетевого потока] (http: // stackoverflow .com/questions/8513304/is-it-possible-to-read-video-stream-with-opencv) – dilbert

ответ

1

Просто для полноты:

концепция Решение:

Возможно, вы могли бы stream в video camera с чем-то вроде FFmpeg, который может перекодировать а затем использовать 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")