2017-01-22 8 views
0

У меня есть устройство декодера линии визирования, подключенное к моему компьютеру через Ethernet.1 секундная латентность видеопотока произошла с Emgu CV

Я использовал Emgucv для захвата видеопотока и просмотра его в окне изображения.

Вот часть кода:

_capture = new Capture("udp://@169.254.1.144:15004"); 
_capture.ImageGrabbed += ProcessFrame; 

Image<Bgr, Byte> frame,frame1; 

private void ProcessFrame(object sender, EventArgs arg) 
{ 
    frame = _capture.RetrieveBgrFrame(); 
    pictureBox1.Image = frame.ToBitmap(); 
} 

видео смотреть в Imagebox, но с 1 сек задержки; Я подсчитал, что кадр достиг ProcessFramefunction и его 12 кадров в секунду и его правильный;

Возникает ли это событие ImageGrabbed?

Почему возникает латентность?

Примечание: Я использовал камеру с USB-камерой вместо визирной линии и отлично работала; Кроме того, также хорошо видна линия обзора плюс, которая может воспроизводить камеру через Ethernet.

ответ

0

Это вызвано длиной буфера по умолчанию, используемого объектом Capture. Сырье OpenCV имеет «CV_CAP_PROP_BUFFERSIZE» флаг можно установить, чтобы изменить это значение с помощью .set()

+0

спасибо, CV_CAP_PROP_BUFFERSIZE поддерживается только DC1394 v 2.x бэкэндом в настоящее время так, как я могу заменить его –