Отображение обработанных изображений с IP-камеры - PullRequest
1 голос
/ 13 мая 2011

У меня есть 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 хотя бы показать предыдущее изображение?

1 Ответ

1 голос
/ 13 мая 2011

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

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

...