У меня 2 IP камеры разных моделей и от одного производителя. Назовем их Cam1 и Cam2. Я хочу получить кадры с этих камер по их сетевому адресу, но есть некоторые проблемы.
Камера 1:
При использовании frame = capture.RetrieveBgrFrame();
frame всегда null.
При использовании frame = capture.QueryFrame();
frame — это ОК.
Cam2(в одной сети с моим ПК):
При использовании frame = capture.RetrieveBgrFrame();
frame всегда null.
При использовании frame = capture.QueryFrame();
WinForm зависает и компьютер (i7 3,3GHz, 6GB RAM) зависает.
Оба адреса потока в порядке. Я пытался открыть их с помощью VLC, а также с платформой OpenCV C++.
В чем здесь может быть проблема?
Вот код:
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using Emgu.CV.UI;
namespace IPcamera
{
public partial class Form1 : Form
{
private Capture capture;
private Image<Bgr, Byte> frame;
public Form1()
{
InitializeComponent();
try
{
capture = new Capture(camera_address);
}
catch (NullReferenceException exception)
{
MessageBox.Show(exception.Message);
}
if (capture != null)
{
Application.Idle += ProcessFrame;
}
}
void ProcessFrame(object sender, EventArgs e)
{
frame = capture.RetrieveBgrFrame();
if (frame != null)
{
pictureBox1.Image = frame.ToBitmap();
}
}
}
}