Для того, чтобы использовать 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-камерой или видеофайлом.



5 коммент.:
Здраствуйте! Что за "opencv_ffmpeg111.dll" неизвестная DLL используется в вашем примере)?
Скачайте emgu. В состав пакета входит входит данная DLL (emgucv\opencv\interfaces\ffopencv\).
Обращаю Ваше внимание на то, что номер версии opencv_ffmpeg*.dll может быть отличаться от 111.
Выложите пожалуйста для скачивания lib-файл, и dll очень нужно)
Скачал какую то версию, но там она уже под OpenCV 2.0
Если Вам необходима именно эта версия, то заберите, пожалуйста, из SVN https://emgucv.svn.sourceforge.net/svnroot/emgucv/trunk ревизию 579. После компиляции проекта Вы получите и dll, и lib
Это сложно( у меня не получилось, тем более пишу по C++ Builder.
Будьте добры, если у кого ни будь получилось выложите пожалуйста. dll и lib.
Отправить комментарий