Для того, чтобы использовать OpenCV под .NET, подключаю обертку EMGU CV. Эта обертка пока лучшая из тех, что я встречал, но не без глюков.
Контекст IP-камеры создается следующим образом. Создается потомок Capture:
private class IpCapture: Capture
{
[DllImport("opencv_ffmpeg111.dll", CharSet = CharSet.Ansi)]
private static extern IntPtr cvCreateFileCapture_FFMPEG([MarshalAs(UnmanagedType.LPStr)] string filename);
[DllImport("opencv_ffmpeg111.dll", CharSet = CharSet.Ansi)]
private static extern void cvReleaseCapture_FFMPEG(IntPtr capture);
public IpCapture(string fileName)
{
_ptr = cvCreateFileCapture_FFMPEG(fileName);
if (_ptr == IntPtr.Zero)
{
throw new NullReferenceException("Error: Unable to create capture from camera");
}
}
protected override void DisposeObject()
{
base.DisposeObject();
cvReleaseCapture_FFMPEG(_ptr);
}
}
Затем создается объект, используя url-камеры:
private static Capture _cameraCapture;
...
_cameraCapture = new IpCapture("http://webcam.oii.ox.ac.uk/mjpg/video.mjpg");
Ну а дальше работаем как с обычной USB-камерой или видеофайлом.