halcon引擎学习笔记(二)执行Procedure程序,扩展名为hdvp的halcon函数

勇哥这套halcon引擎的学习笔记贴子共七篇,它是在官方指导文档《http://www.skcircle.com/?id=1343》的基础上学习编写而成的笔记。只是有一篇讲解怎么调用向量变量的没有加入,因为勇哥实在不知道这个向量变量有啥子用。以后如果搞明白了再加入吧。


2020/7/3勇哥注:

原来halcon中的向量就是个容器,跟c++标准模板库中的那个向量是一致的。第八篇加上来吧

halcon引擎学习笔记(八)使用向量变量



halcon引擎学习笔记(七)在在HDevEngine/C#中使用实时编译器JIT 

halcon引擎学习笔记(六)多线程并发执行外部函数,多窗口显示  

halcon引擎学习笔记(五)多线程并发执行外部函数  

halcon引擎学习笔记(四)调用时的错误处理   

halcon引擎学习笔记(三)执行本地或者外部程序   

halcon引擎学习笔记(二)执行Procedure程序,扩展名为hdvp的halcon函数   

halcon引擎学习笔记(一)执行hdev程序   

演示程序勇哥用的是halcon19.11,C#使用的是vs2013版本。

全部测试代码勇哥已经打包,请点击下载


如果你要调用的程序是一个hdev主程序,且当中没有外部函数或者自定义函数,则可以看(一)

如果你要调用的程序是一个hdev主程序,且当中有若干的外部函数或者自定义函数,则可以看(三)

如果你要调用的程序只是一个hdvp的外部函数,则可以看(二)

如果你需要多线程调用外部函数,则可以看(六)(七)

如果你的程序中用到向量变量,则可以看(八)


正文部分

========================


hdvp程序即是halcon的外部函数,而halcon算子相当于是内部函数,hdvp程序保存于本地磁盘上可以供halcon以外部程序的方式进行调用。

这种格式的程序用halcon直接打开后不能run起来的,你得在main中写调用代码来使用它。

另外,如果你的hdvp函数文件需要设置搜索路径以被halcon发现,否则你写代码时会发现这个函数不存在。

image.png

指定目录载入的全部外部函数都可以在这个列表中看到。

image.png



例程运行效果:

image.png


源代码:

using HalconDotNet;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
//演示程序by勇哥 www.skcircle.com
    public partial class Form1 : Form
    {
        private HWindow Window;
        string ProgramPathString;
        private HDevEngine MyEngine = new HDevEngine();
        private HDevProcedureCall ProcCall;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                var Program = new HDevProcedure("detect_fin");
                ProcCall = new HDevProcedureCall(Program);
                MessageBox.Show("ok");
            }
            catch (HDevEngineException Ex)
            {
                MessageBox.Show(Ex.Message, "HDevEngine Exception");
                return;
            }
            catch
            {
                return;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                var Framegrabber = new HFramegrabber();
                Framegrabber.OpenFramegrabber("File", 1, 1, 0, 0, 0, 0, "default", -1, "default", -1, "default", "fin.seq", "default", -1, -1);
                HImage Image = new HImage();
                HRegion FinRegion;
                HTuple FinArea;
                for (int i = 0; i <= 2; i++)
                {
                    Image.GrabImage(Framegrabber);
                    Image.DispObj(Window);
                    ProcCall.SetInputIconicParamObject("Image", Image);
                    ProcCall.Execute();
                    FinRegion = ProcCall.GetOutputIconicParamRegion("FinRegion");
                    FinArea = ProcCall.GetOutputCtrlParamTuple("FinArea");
                    Image.DispObj(Window);
                    Window.SetColor("red");
                    Window.DispObj(FinRegion);
                    Window.SetColor("white");
                    Window.SetTposition(150, 20);
                    Window.WriteString("FinArea: " + FinArea.D);
                    MessageBox.Show("continue...");
                }

            }
            catch (HDevEngineException Ex)
            {
                MessageBox.Show(Ex.Message, "HDevEngine Exception");
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            var halconExamples = HSystem.GetSystem("example_dir");
            var ProcedurePath = halconExamples + @"\hdevengine\procedures";
            ProgramPathString = halconExamples + @"\hdevengine\hdevelop\fin_detection.hdev";
            MyEngine.SetProcedurePath(ProcedurePath);



            Window = hSmartWindowControl1.HalconWindow;
            Window.SetDraw("margin");
            Window.SetLineWidth(4);
        }
    }
}


--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!



#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。如果需要本贴图片源码等资源,请向勇哥索取。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«   2020年8月   »
12
3456789
10111213141516
17181920212223
24252627282930
31
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
标签列表
搜索
最新留言
最近发表
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:

Powered By Z-BlogPHP 1.6.0 Valyria

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864