C#上位机-WPF中使用WindowFormHost和Picturebox显示相机画面时,滚轮放大缩小画面会发生抖动和闪烁,如何解决(附代码Demo)

问题概述

        使用visual studio的WindowFormsHost与Picturebox控件显示海康工业相机画面,鼠标滚轮放大缩小画面时伴随着抖动和闪烁,特别是帧率越低的相机,闪烁的频率越高。使用针对Picturebox的双缓冲图像方法及其他方法都没有用。最后发现这是构件本身的问题,只能使用其他的构件。

环境配置

编译平台:visual studio 2022

项目类型: Wpf(.NET Framework4.8框架)

Halcon版本:19.11.0.0

实现逻辑

  1. 在Visual Studio中,WPF项目可以基于不同的框架进行创建,主要包括.NET Framework和.NET(通常称为.NET Core或.NET 5/6及更高版本)。但是要导入的Halcon库只支持 .NET Framework ,如果使用.NET,在导入Halcon工具时会显示导入失败。
  2. 方法一:首先下载halcon软件halcon19.11.0.0+license,安装参考Halcon19安装教程,文中的4.1步骤不用理会,直接把前面下载的license导入到Halcon文件目录中的license文件中就可以运行了。下载完成之后找到Halcon文件目录中的halcondotnet.dll文件,导入到自己项目的引用中,参考halcon库导入
    方法二(更加便捷)
            在项目的工具中打开NuGet程序包管理平台

     搜索Halcon,选择第一个并安装

            安装成功之后在本项目文件目录中找到packetges->HalconDotNet.19.11.0->lib->net35->halcondotnet.dll(只要是halcondotnet.dll文件就行),打开项目的工具箱,在空白位置右
    键,选择选择项,在WPF组件中导入该文件。

  3. HSmartWindowControl控件自带滚轮缩放和鼠标点击拖动的功能,所以不用另外设置,在控件属性->布局->HImagePart中可以直接设置呈现在控件中的相机画面大小。后续也可以通过代码调整窗口呈现出的相机画面大小。
  4. 移植代码前,首先通过设置Halcon软件,导出能够显示相机画面的代码,然后在自己的项目中加入HSmartWindowControl控件,并将导出的代码移植到自己的项目中,移植过程参考:Halcon采集图像与代码移植

    提供一些素材,可实现自动采集设备,打开设备并采集。
    代码Demo:

    海康MVS文件目录->Development\Sample

    Halcon文件目录->MVTec\HALCON-19.11-Progress\examples

过程中遇到的困难

1.库文件与目标平台不匹配

在运行项目时显示 项目在运行时尝试加载的某些库文件与当前应用程序的目标平台不匹配。 这通常是由于试图在错误的位架构(例如,x86 vs. x64)上运行库或可执行文件导致的。

由于我使用的Halcon库版本为X64,所以要 确保项目也是针对 64 位平台构建的。

解决方法:

在 Visual Studio 中:

  • 右键点击你的项目 -> "Properties"(属性) -> "Build"(生成)选项卡。
  • 在 "Platform target"(目标平台)下拉菜单中选择 "x64" 或 "x86",根据你的 Halcon 库版本。

2.使用Halcon连接相机后,海康MVS等软件无法打开相机设备

使用Halcon连接相机之后,后面打开海康MVS及上位机软件,均显示“驱动不匹配或为安装驱动”,重装海康MVS也解决不了问题, 出现这个的原因是halcon占用了usb驱动,导致客户端识别不了,同时halcon更改了这个驱动。

解决方法:海康工业相机USB接口连接Halcon21后,海康MVS客户端无法打开,如何解决

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值