C# WPF uEye Camera 采集视频

C# WPF uEye Camera capture video

我有从相机捕捉视频的程序。应用程序采用 windows 形式,我想将此代码用于 WPF 应用程序,但它不起作用。 我使用手柄从 uEye 相机捕捉图像。 windows 形式是

displayHandle = PictureBox.Handle

但是当我在 WPF 中使用 handle 时,我没有收到来自摄像头的视频。 在 WPF 中我使用这个句柄

HwndSource hwndSource = HwndSource.FromVisual(pbMainImage) as HwndSource;
displayHandle = hwndSource.Handle;

但还是不行

两个手柄我都用过

InitializeComponent();

private void onFrameEvent(object sender, EventArgs e){
  uEye.Camera Camera = sender as uEye.Camera;

  Int32 s32MemID;
  Camera.Memory.GetActive(out s32MemID);
  Camera.Display.Render(s32MemID, displayHandle, uEye.Defines.DisplayRenderMode.FitToWindow);
}

displayHandle 是来自组件 pictureImage 的句柄。

感谢您的帮助。

 HwndSource hwndSource = HwndSource.FromVisual(pbMainImage) as HwndSource;
displayHandle = hwndSource.Handle;

以后不要使用

InitializeComponent();

因为 hwndSource 为 null,所以 Camera 无法识别句柄。您可以在使用句柄之前创建句柄,而不是在初始化组件之后。

将 IDS 摄像头传输到 WPF 组件。

private void onFrameEvent(object sender, EventArgs e)
{
      uEye.Camera Camera = sender as uEye.Camera;

      Int32 s32MemID;
      Camera.Memory.GetActive(out s32MemID);
      if (frameCamera != null)
            frameCamera.Dispose();
      frameCamera = null;
      Camera.Memory.ToBitmap(s32MemID, out frameCamera);

      Dispatcher.Invoke(new Action(() =>
      {
            pbMainImage.Source = loadBitmap(frameCamera);
      }));
}

loadBitmap(frameCamera) - Convert Bitmap to BitmapSource