2011-05-13 72 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 2011-05-13 11:29:51

回答

1

您可以將圖像的緩存複製到相同格式的一個新的BitmapSource圖像(的PixelFormat,高度,寬度,步幅)使用Create (from Array)Create (from IntPtr)並顯示在WPF的圖像控件的BitmapSource, 或者你可以use DirectX to do that faster(支持30fps(和1fps)BitmapSource方法應該這樣做)。

此外,請考慮不使用視圖中的事件,而是使用綁定和命令。