2011-05-13 3 views
1

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

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

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

Hooks_DispatcherInactive(...) 
{ 
    Next() 
} 

Следующая() вызовы вызовы методов обработки изображений и (должны) показывать изображение:

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

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

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

+1

К сожалению, это не под моим контролем. Однако он сильно дрожит. В среднем около 1000 миллисекунд, но может также быть 300 или 1700 ... – Loy

ответ

1

Вы можете скопировать буфер на изображение в новый BitmapSource изображения одного и того же формата (PixelFormat, высота, ширина, шаг) с помощью Create (from Array) или Create (from IntPtr) и показать, что BitmapSource в контроле изображения WPF, в или вы можете use DirectX to do that faster (для 30 кадров в секунду (и 1 кадра в секунду), подход BitmapSource должен делать).

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

Смежные вопросы