EmguCv 实时视频解码延迟 600 毫秒
600 Milliseconds delay in EmguCv real-time video Decoding
我正在使用 C# 开发实时计算机视觉应用程序。但我无法优化 Emgucv 解码。我有 800 毫秒的真实延迟和 600 毫秒的 IP 摄像机提供商应用程序 AXIS 延迟。
如何优化我最多可以延迟 250 毫秒的代码?
这是抓取图像的代码。
capture1 = new Capture(IpFirstCamTxt.Text); //create a camera captue from RTSP Stream
capture2 = new Capture(Ip2ndCamTxt.Text);
capture3 = new Capture(Ip3rdCamTxt.Text);
capture4 = new Capture(Ip4thCamTxt.Text);
capture1.Start();
capture2.Start();
capture3.Start();
capture4.Start();
capture1.ImageGrabbed += ProcessFrame1;
capture2.ImageGrabbed += ProcessFrame2;
capture3.ImageGrabbed += ProcessFrame3;
capture4.ImageGrabbed += ProcessFrame4;
private void ProcessFrame1(object sender, EventArgs arg)
{
_capture.RetrieveBgrFrame().ToBitmap());
capture1.Retrieve(img1, 3);
pictureBox1.Image = img1.ToBitmap();
}
private void ProcessFrame2(object sender, EventArgs arg)
{
capture2.Retrieve(img2, 3);
pictureBox3.Image = img2.ToBitmap();
}
private void ProcessFrame3(object sender, EventArgs arg)
{
capture3.Retrieve(img3, 3);
pictureBox4.Image = img3.ToBitmap();
}
private void ProcessFrame4(object sender, EventArgs arg)
{
capture4.Retrieve(img4, 3);
pictureBox5.Image = img4.ToBitmap();
}
我的应用程序与相机提供商应用程序相比的秒表结果:
上述问题已经通过使用名为LIVE555的实时RTSP流捕获库之一得到解决。我在 C++ 中使用过它,并与 C# 共享图像的内存。
延迟减少到大约 200 毫秒左右。
如果有人想要实时视频流,那么 LIVE555 是最好的。
我会将项目上传到我的 Github.
我正在使用 C# 开发实时计算机视觉应用程序。但我无法优化 Emgucv 解码。我有 800 毫秒的真实延迟和 600 毫秒的 IP 摄像机提供商应用程序 AXIS 延迟。
如何优化我最多可以延迟 250 毫秒的代码?
这是抓取图像的代码。
capture1 = new Capture(IpFirstCamTxt.Text); //create a camera captue from RTSP Stream
capture2 = new Capture(Ip2ndCamTxt.Text);
capture3 = new Capture(Ip3rdCamTxt.Text);
capture4 = new Capture(Ip4thCamTxt.Text);
capture1.Start();
capture2.Start();
capture3.Start();
capture4.Start();
capture1.ImageGrabbed += ProcessFrame1;
capture2.ImageGrabbed += ProcessFrame2;
capture3.ImageGrabbed += ProcessFrame3;
capture4.ImageGrabbed += ProcessFrame4;
private void ProcessFrame1(object sender, EventArgs arg)
{
_capture.RetrieveBgrFrame().ToBitmap());
capture1.Retrieve(img1, 3);
pictureBox1.Image = img1.ToBitmap();
}
private void ProcessFrame2(object sender, EventArgs arg)
{
capture2.Retrieve(img2, 3);
pictureBox3.Image = img2.ToBitmap();
}
private void ProcessFrame3(object sender, EventArgs arg)
{
capture3.Retrieve(img3, 3);
pictureBox4.Image = img3.ToBitmap();
}
private void ProcessFrame4(object sender, EventArgs arg)
{
capture4.Retrieve(img4, 3);
pictureBox5.Image = img4.ToBitmap();
}
我的应用程序与相机提供商应用程序相比的秒表结果:
上述问题已经通过使用名为LIVE555的实时RTSP流捕获库之一得到解决。我在 C++ 中使用过它,并与 C# 共享图像的内存。 延迟减少到大约 200 毫秒左右。 如果有人想要实时视频流,那么 LIVE555 是最好的。 我会将项目上传到我的 Github.