Отображение обработанных изображений с IP-камеры

У меня есть IP-камера, которая обслуживает изображения. Затем эти изображения обрабатываются с помощью EmguCV, а затем я хочу отобразить обработанные изображения.

Чтобы показать изображения, я использую этот код:

Window1(){
     ...
     this.Dispatcher.Hooks.DispatcherInactive 
         += new EventHandler(Hooks_DispatcherInactive);
}

Hooks_DispatcherInactive(...)
{
    Next()
}

Next () вызовы вызывает методы обработки изображения и (должны) отображать изображение:

MatchResult? result = survey.Step();
if (result.HasValue)
{
    Bitmap bit = result.Value.image.Bitmap;
    ImageSource src = ConvertBitmap(bit);
    show.Source = src;
    ...
}

Это отлично работает, когда я подключаю обычную веб-камеру со скоростью 30 кадров в секунду. Но изображения IPCam загружаются сюда за секунду, даже когда я получаю к ним доступ через браузер. Итак, в то же время WPF ничего не показывает, даже предыдущее изображение, которое было обработано.

Как я могу заставить WPF хотя бы показывать предыдущее изображение?


person Loy    schedule 13.05.2011    source источник
comment
К сожалению, это не под моим контролем. Тем не менее, он сильно дрожит. Среднее значение составляет около 1000 миллисекунд, но с таким же успехом может быть 300 или 1700 ...   -  person Loy    schedule 13.05.2011


Ответы (1)


Вы можете скопировать буфер изображения в новое изображение BitmapSource того же формата (PixelFormat, Height, Width, stride), используя Создать (из массива) или Создать (из IntPtr) и отобразите этот BitmapSource в элементе управления Image WPF, или вы можете использовать DirectX чтобы сделать это быстрее (для 30 кадров в секунду (и 1 кадров в секунду) должен работать подход BitmapSource).

Кроме того, НЕ используйте события в представлении, вместо этого используйте привязки и команды.

person Danny Varod    schedule 13.05.2011