VM4.2 脚本调用halcon解码
VM4.2 脚本调用halcon解码 实现方法

   


   /// <summary>
    /// 流程执行一次进入Process函数
    /// </summary>
    /// <returns></returns>
    public bool Process()
    {
        //每次执行将进入该函数,此处添加所需的逻辑流程处理
        //实例化ImageData类型图像
        ImageData img=new ImageData();

        GetImageValue("in0",ref img);

       HObject ho_image;
       HOperatorSet.GenEmptyObj(out ho_image);
        if (img.PixelFormat == ImagePixelFormate.MONO8)
        {
            
            //开辟空间
            IntPtr grayPtr=Marshal.AllocHGlobal(img.Width*img.Heigth);
            //向内存空间中写入数据
            Marshal.Copy(img.Buffer,0,grayPtr,img.Buffer.Length);
            
            HTuple w,h,s;
            w=img.Width;
            h=img.Heigth;
            s=grayPtr;

            HOperatorSet.GenImage1(out ho_image,"byte",w,h,grayPtr);
            HTuple w1,h1,s1;
            HOperatorSet.GetImageSize(ho_image,out w1,out h1);

            SetIntValue("out1",h1);
            SetImageValue("out0",img);
            
            //创建一个二维码数据class模型    
            HObject  ho_SymbolXLDs;
        
            HTuple hv_DataCodeHandle = null, hv_ResultHandles = null;
            HTuple hv_DecodedDataStrings = null;
        
            //创建一个二维码数据class模型
            HOperatorSet.CreateDataCode2dModel("QR Code", "default_parameters", "maximum_recognition", 
                out hv_DataCodeHandle);
            //-检测和读取图像中的二维数据代码符号或训练二维数据代码模型。
            HOperatorSet.FindDataCode2d(ho_image, out ho_SymbolXLDs, hv_DataCodeHandle, "train", 
                "all", out hv_ResultHandles, out hv_DecodedDataStrings);
            //删除2D数据代码模型并释放分配的内存。
            HOperatorSet.ClearDataCode2dModel(hv_DataCodeHandle);
            ho_image.Dispose();
            ho_SymbolXLDs.Dispose();
            
            SetStringValue("out2",hv_DecodedDataStrings);
            //用完记得释放指针   
            Marshal.FreeHGlobal(grayPtr);
        }
        return false;
    }

版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇

深度学习小工具之快速图像分割

下一篇

VM组合模块的使用方法(VM4.1)

评论请先登录 登录
全部评论 11

请问需要调用库文件吗?我无法在脚本里使用halcon的算子,已经引用了halcon的库 HalconDotNet;

2024-08-27 18:54:20 上海
回复

需要调用库文件吗?

2024-08-27 18:52:37 上海
回复
摩托呀 作者

OpencvSharp存图方法:

引用:\Applications\3rdLib\OpenCv  路径下的  OpenCvSharp.dll        

     引用路径还要放  OpenCvSharpExtern.dll


具体实现的方法:


            ImageData img=new ImageData();
            GetImageValue("in0",ref img);          
            Mat OImage=new Mat(img.Heigth,img.Width,MatType.CV_8UC1,img.Buffer);           
            OImage.ImWrite(@"C:\Users\Administrator\Desktop\TestMiniExcel\123.bmp");

2023-07-04 16:36:12 未知地区
回复

请问  

怎样把halcon预处理的图片显示在VM上?

2023-02-16 10:38:22 未知地区
回复

还用更多关于vm调用halcon的案例?可以多出供我们下游参考参考

2023-02-16 08:07:22 未知地区
回复

楼主,彩色图像传入脚本的怎么转换成HObject呢?

2022-09-20 13:44:07 未知地区
回复
摩托呀 作者

引用命名空间:using System.Runtime.InteropServices;

2022-08-14 23:35:38 未知地区
回复

学到了,受教了

2022-08-09 18:33:56 未知地区
回复

这是把输入进来的图像又给了输出吧,用Halcon处理完的图像怎么转成ImageData输出

2022-08-09 17:00:37 未知地区
回复

学习了

2022-08-08 16:23:28 未知地区
回复

已点赞收藏,感谢楼主分享。不知道能否自己封装好,引用DLL 然后VM脚本里就写一个方法就能实现呢?

2022-08-04 09:33:30 未知地区
回复
  • 1
Lv.0
2
关注
13
粉丝
7
创作
45
获赞
所属专题
  • VM4.2 脚本调用halcon解码
  • 浅谈VsionMaster:用脚本最简代码,调用halcon
  • 浅谈VsionMaster:用脚本,做一些好玩的东西。
  • VisionMaster在脚本更改存图路径
  • 脚本输出泛型(数组)的方法
  • VM引用自定义dll实现个性化功能(VM4.1)
  • 【共享学习】---脚本实现浮点数保留N位小数
  • 用脚本调用sdk采集图片
  • 【共享学习】---脚本实现修改字符串指定位置字符
相关阅读
  • 【3D系列】我们用2D相机实现3D无序抓取了
    2024-10-21 浏览 0
  • 【3D系列】我们用2D相机实现3D无序抓取了
    2024-10-21 浏览 0
  • 第三届“悉灵杯”基于MV-DT01SDU相机识别果蔬等数据集
    2024-10-14 浏览 0
  • 第三届“悉灵杯”基于MV-DT01SDU相机识别果蔬等数据集
    2024-10-14 浏览 0
  • [启智杯]赛事资料下载说明
    2024-10-29 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器