我有程序从相机捕获视频。应用程序是在Windows窗体中,我想将此代码用于WPF应用程序,但它无法正常工作。 我使用手柄从uEye相机捕获图像。在Windows窗体中是
displayHandle = PictureBox.Handle
但是当我在WPF中使用句柄时,我没有收到来自摄像头的视频。 在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 si handle from component pictureImage。
感谢您的帮助。
答案 0 :(得分:0)
HwndSource hwndSource = HwndSource.FromVisual(pbMainImage) as HwndSource;
displayHandle = hwndSource.Handle;
不要在
之后使用InitializeComponent();
因为hwndSource为null然后Camera无法识别句柄。您可以在初始化组件之后使用句柄之前创建句柄。
答案 1 :(得分:0)
将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) - 将位图转换为BitmapSource