VisionPro脚本调用Halcon深度学习模型方法

众所周知,Halcon的深度学习模型是可以使用C#的编程方式来调用的。

而VisionPro的Quickbuild环境,提供了一套C#的脚本环境,所以可以尝试使用使用里面的脚本编程环境,调用已经训练好的Halcon深度学习模型。

Halcon版本:23.11

VisionPro 版本 9.0

好的,下面开始配置,首先配置VisionPro需要的dll文件

调用Halcon的深度学习模型,需要用到如下dll文件

将这两个dll文件拷贝到VisionPro安装目录的bin文件夹下面

以下文件都是从Halcon安装的bin\x64-win64目录里面拷贝到bin文件目录下面,

libiomp5md.dll
halcon.dll
halcondl.dll
如下图所示:

里面的license文件需要在网上下载一下,具体方法,请参考网上的对应教程。

拷贝完成后,需要打开quickbuild,在quickbuild里面添加toolblock,然后选择C#脚本

在如图脚本选项中,选择添加/移除参考

将这两个dll添加到程序集里面。

然后编译,如果编译成功,就可以调用halcon对应的函数了。

注意:VisionPro对应图片格式是ICogImage,需要将ICogImage转换为Hobject,halcon的图片格式,转换方法为,首先将ICogImage转换为bmp格式的图片,再将bmp图片转换为HObject图片。

其转换函数如下:

 public static HObject BitmapToHImage(Bitmap SrcImage)
  {
    HObject Hobj;
    HOperatorSet.GenEmptyObj(out Hobj);    
    Point po = new Point(0, 0);
    Size so = new Size(SrcImage.Width, SrcImage.Height);//template.Width, template.Height
    Rectangle ro = new Rectangle(po, so);
 
    Bitmap DstImage = new Bitmap(SrcImage.Width, SrcImage.Height, PixelFormat.Format8bppIndexed);
    DstImage = SrcImage.Clone(ro, PixelFormat.Format8bppIndexed);
 
    int width = DstImage.Width;
    int height = DstImage.Height;
        
    Rectangle rect = new Rectangle(0, 0, width, height);
    System.Drawing.Imaging.BitmapData dstBmpData =
      DstImage.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, PixelFormat.Format8bppIndexed);//pImage.PixelFormat
    int PixelSize = Bitmap.GetPixelFormatSize(dstBmpData.PixelFormat) / 8;
    int stride = dstBmpData.Stride;
    unsafe
    {
      int count = height * width;
      byte[] data = new byte[count];
      byte* bptr = (byte*) dstBmpData.Scan0;
      fixed (byte* pData = data)
      {
        for (int i = 0; i < height; i++)
          for (int j = 0; j < width; j++ )
          {
            data[i * width + j] = bptr[i * stride + j];
          }
        HOperatorSet.GenImage1(out Hobj, "byte", width, height, new IntPtr(pData));
      }
    }
 
    DstImage.UnlockBits(dstBmpData);
 
    return Hobj;
  }
  

转换完成后,需要加载模型,我这里推荐在脚本初始化函数里面加载模型,避免运行过程中重复加载。

加载完成后,可以将结果输出到Toolblock的output终端上面,方便对结果进行分析。

### C# 机器视觉检测软件框架概述 #### Halcon 和 C# 结合的通用视觉框架 一种流行的解决方案是采用C#联合Halcon机器视觉通用视觉框架2。此框架是一个流程化开发工具,不仅支持缺陷检测、定位、测量以及OCR识别等功能,还特别适合于希望利用C#语言优势的同时享受Halcon强大图像处理能力的应用场景[^1]。 #### VisionPro 和 C# 对于那些倾向于使用VisionPro作为底层库的情况,存在另一种基于VisionPro9.0和C# (Winform) 的机器视觉框架。这种组合允许开发者创建具有四个独立运作工站的系统;每个工站都配备了自己的取像工具、算法流程及通信机制,从而实现了高度灵活的任务分配与执行模式[^2]。 #### 升级版本的集成方案 还有更先进的选项——即升级后的C#联合Halcon机器视觉框架源码。相比早期版本NxtVision而言,新版本改进了代码结构,并引入UI设计器和支持C#脚本的功能。更重要的是,这个框架探索性地集成了视觉处理同运动控制系统之间的协作可能性,形成了一套更为完整的解决方案[^3]。 #### 插件式扩展性强的 WPF + Halcon 架构 最后值得一提的是另一个基于WPF技术和Halcon库构建起来的强大平台。该平台拥有超过五十种预定义好的运算符模块供使用者调用,在此基础上可以根据具体需求轻松添加更多自定义特性或组件,体现了极高的灵活性和易用性[^4]。 ```csharp // 示例:简单的图像读取与显示操作(假设已导入必要的命名空间) public void LoadAndShowImage(string imagePath) { HObject ho_Image; HTuple hv_WindowHandle; // 创建窗口句柄 Window.OpenWindow(out hv_WindowHandle, ...); // 加载图片文件到内存中 ReadImage(out ho_Image, "example"); // 显示加载成功的图像至指定窗口内 DispObj(ho_Image, hv_WindowHandle); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值