| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> HALCON联合C#检测表面缺陷——实例化相机采集图片和读取本地图片(二) -> 正文阅读 |
|
[人工智能]HALCON联合C#检测表面缺陷——实例化相机采集图片和读取本地图片(二) |
上一节中,我们实现了读取文本来,这样来创建相机,这一节们继续说实例化相机 当我们创建了读取本地文本类之后,在主程序中实例化 ? ?实例化之后,读取相机序列号就可以了,还有两个报错的地方是注册halcon显示函数,这两个函数的功能就是用来在界面上显示相机采集的图片,这里我们先不管,后面说到Halcon的导出时,我们再来补上他,这一节主要还是说相机的实例化,打开,关闭等 ?初始化相机函数完成后,我们在form_load中直接加载就可了 ? ?打开软件,加载相机,关闭软件同时也要关闭相机,我们在form1的事件中加入一个formclosed的事件 ?在后台代码中就生成了一个formclosed的事件 ?在这里我们加入相机关闭事件 ? //窗口关闭事件 ? ? ? ? ? ? mCamera2.stopGrab(); ?完成之后,为了代码的整齐,我们剪切复制到form_load函数的下面 ?在程序的顶部添加halcon的命名空间名称 ?using HalconDotNet; 添加相机1和相机2的回调函数 ?//相机1回调函数 ? ? ? ? } 具体内容,我们马上从halcon中导入,这里两个回调函数只要相机被触发拍照就会自动执行,关于回调函数大家可以百度查一查原理,这两个函数都有一个输入参数,这个输入参数就是相机采集图像后转换成halcon的图像,转换函数之前我们在相机类中已经写过了, ? ?我们打开halcon软件写入以下代码,这段代码的功能就是读取一张图片,然后把图片显示在halcon窗口上,并且图片大小适应窗口大小 ?read_image (Image, 'printer_chip/printer_chip_01')? //根据路径读取图片 完成之后,可以运行一下看看效果,上面的路劲图片无所谓,大家可以随便浏览选择一张,我是默认软件自带的图片。 导出halcon代码到C#,点击文件,导出 ?选择导出的路径和语言,这里选择C# ?选择导出即可 ?我们发现导出的文件就是C#的一个类 鼠标双击打开 ? ?虽然代码很多,但是我们只需要看action函数中的就可以 了 ?这里就是刚刚导出的主程序,对于主程序我们其实是可以直接使用的,但是有些是没有必要的,我们也可以删除,大家对照上面图片和下面的代码,我删减了一部分 ?private void action()
? ? HObject ho_Image; ? ? // 同上,hv_Width和hv_Height是数组变量 ? ? HTuple hv_Width = new HTuple(), hv_Height = new HTuple();
? ? ?//根据路径读取图片算子 ? ? //使用前对数组清空 ? ?//获取图片大小算子 //这里不需要判断窗口,因为在C#中窗口我们已经创建好了,所以不需要判断 ? ? hv_Width.Dispose(); ? } 程序导出后,我们直接复制到我们之前创建的两个相机回调函数中就可了,但是需要修改,回调函数中图片不是根据路径读取的,是相机采集的,所以具体修改后如下 ?//相机1回调函数 ? ? HTuple hv_Width = new HTuple(), hv_Height = new HTuple();
//这里的窗口句柄会在下一章节中我们创建和修改 ? ? hv_Width.Dispose(); ? ? ? ? } ? HTuple hv_Width = new HTuple(), hv_Height = new HTuple();
//这里的窗口句柄会在下一章节中我们创建和修改 ? ? hv_Width.Dispose(); ? ? ? ? } 这样,我们的相机回调函数就差窗口显示了,下面我们实现创建显示窗口变量,之前我们在界面上已经放置 了两个窗口 ?但是没有在后台代码中定义两个窗口,定义窗口的目的是为了获取窗口句柄,进而在窗口上进行更方面的操作,当然这不是唯一的方法,具体如下 ?? ? //窗口定义 然后在初始化函数里进行获取界面上两个HALCON窗口句柄的操作 在InitControl函数里添加如下代码 ? ?? ?//窗口创建 然后我们修改两个回调函数中的窗口句柄就可以了 ?//相机1回调函数 ? ? HTuple hv_Width = new HTuple(), hv_Height = new HTuple();
? ? hv_Width.Dispose(); ? ? ? ? }
? HTuple hv_Width = new HTuple(), hv_Height = new HTuple();
? ? hv_Width.Dispose(); ? ? ? ? } 到这一节为止,如果大家手上有相机,这10篇文章的代码可以实现相机的打开,关闭,采集图像显示到窗口上,不过还需要在启动软件后,软触发一下相机即可,这一点后一篇文章我们讲解;另外下一篇我们因为可能手上没有相机,我会带大家实现手动选取本地一张图片显示到窗口上,这样在后期的时候,我们讲解缺陷检测,大家可以根据我给出的图片或者手上的图片去检测 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 23:17:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |