Halcon一日一练:创建AOI】的更多相关文章

第一种方法: 读了一个单一图像: read_image(Image,'fabrik') 这种方式可以快速的读取软件自身携带的库图像文件,系统设定了库图像映像文件的快速读取方式,我们也可以通过绝对地址的方式来读取指定的目录文件: read_image(Image1,'E:/Halcon一日一练/参考资料/images/图片1.jpg') 图像设定的映像文件目录可以进行关闭,set_system函数可以对映像文件目录进行关闭,关闭之后必须读取图像的绝对地址,否则,系统将会报错, set_system…
AOI:Area Of Interesting.感兴趣区域,即你要处理的区域. 一般情况,一整张图像,我们需要对局部进行操作,我们会选择一个我们需要处理的区域,对其进行处理,其他区域进行屏蔽.这个区域可以是固定位置的区域,也可以是随机位置的区域.而这个区域就是图像处理过程的感兴趣区域,简称AOI.我们把需要的图像通区域的方式进行处理,从而得到我们需要的信息. 下面,介绍一种创建AOI的方法. dev_set_draw('margin') read_image(Image,'plit2.png')…
首先理解一个什么是三通道图像: 三通道图像就是彩色图像,我们之前黑白相机或黑白电视机都是彩用的灰阶图像,即单通道图像,一般是2的8次方个灰阶,即256个灰阶.彩色图像采用RGB,红绿蓝三个通道来合成彩色图像.所以称之为三通道图像.或称为8位通道色. 我们可以把RGB三原色想像成油盐酱醋一样,任何美味都是通过这些调味品做出来的.任何颜色也是RGB三原色按一定的比例显示出来的.三个通道就像三个控制器,去调整三个颜色的比重. Halcon有生成图像和合成图像的算子,例程如下. gen_image_co…
Halcon在设计之初就提供了完整的图像采集方案,适应了多种图像设备采集图像,以及各种不同环境的采集方案. 通常情况下,图像的采集应该是所有机器视觉项目首要解决的任务,不幸的是,需要解决图像采集的问题,对应装备的种类具有特殊性,以及非标准化的硬件设备,比如,USB相机或IEEE1394相机,他们提供的物理接口及设备驱动都完全不一样.为了让我们专注于机器视觉实际的问题,Halcon提供了大量的图像采集接口,通过这种快速接口,HALCON图像采集的代码量大为减少,只要几行代码就能解决问题. 使用ha…
从图像属性我们可以了解图像的基本信息,比如大小,高度,指针等. Halcon提供了获取图像属性的算子. 我们来看看下面例子: **获取图像属性 read_image(Image,'Clip') dev_display(Image) get_image_type(Image,Type)//获取图像类型 get_image_size(Image, Width, Height)//获取图像大小:宽度,高度 get_image_time(Image, MSecond, Second, Minute, H…
某些场合,我们需要刷新图像来识别图像处理过程的差异性,便于调试判断问题和预测.Halcon提供了图像刷新操作,这些操作不会改变程序的最终处理结果. 例程: **实时刷新图像 dev_update_window('on') dev_close_window() dev_open_window(,,/,/,'black',WindowHandle) read_image(Bond,'die/die_03') dev_display(Bond) set_display_font(WindowHandl…
1.图像像素: 像素是指由图像的小方格即所谓的像素(pixel)组成的,这些小方块都有一个明确的位置和被分配的色彩数值,而这些一小方格的颜色和位置就决定该图像所呈现出来的样子.像素是构成图像的基本单元,通常以像素/英寸PPI(表示)为单位来表示图像分辨率. 当图像尺寸以像素为单位时,我们需要指定其固定的分辨率,才能将图像尺寸与实际尺寸进行转换. 在Halcon中,快速获得图像大小,像素个数及其它图像信息的算子是:get_image_pointer_rect 例程: read_image(Imag…
大很多场合,需要在视觉程序中导入CAD文档,比如,在3C行业,需要对手机外壳进行CNC加工,或者点胶操作,此时,需要获取产品的各个点的数据.如果将CAD直接导入,就会大的减少编程工作量,同时也能达到很高的精度. 以下为Halcon自带例程: * This example program shows how to read DXF files and how to * use this CAD description of objects to generate shape models. * T…
上一篇主要介绍了图像拼接的一些原理和方法,这一篇将主要介绍步骤和例程: 接上一篇: 基于特征的接拼方法,分为四个步骤 1.特征检测:从图像中检测出显著且独特的图像特征,诸如:闭合区域,直线段,边缘,轮廓,点等. 2.特征匹配:从相似度确定图像之间特征的对应关系,又分为如下几类: 2.1:使用空域关系的方法 2.2:使用不变描述符的方法 2.3:松弛方法 2.4:金字塔和小波方法 3.变换模型的估计:变换函数选择和函数参数估计 4.图像变换和重采样:可以通过前向或后向的方式来实现,插值的方法有最近…
因操作图像处理之前,需要对图像进行采集.采集图像,我们首先要确定的是图像的像素和采集的效率.这些都需要对设备进行配置与操作.现实情况是图像设备有各自不同的采集方式,配置也各不相同.这就需要设备提供商提供对应的开发工具包.这些工具包可能会遵循一定的标准.因此,在halcon中应用采集设备,可能需要按照指定的要注重写应用程序. Halcon提供了超过百种设备的动态库,这些动态库文件对应于windows系统为DLL库文件及Uinx系统为Shared Libraries共享库文件,其图像采集接口覆盖了常…
很多时候,我们需要知道每个函数的运算周期,以提高程序的运行效率.知道运行时间对于图像算法处理很重要 Halcon提供相关的算子,我们先来看代码: **获取图像处理时间 read_image(Image,'fuse')//读取图像 count_seconds(Seconds)//读取时间 threshold(Image, Region, , )//阈值分割 count_seconds(Seconds1)//读取时间 PTime:=(*(Seconds-Seconds1))//计算阈值分割时间 co…
先了解什么是阈值,度娘告诉我的是:一个领域或一个系统的界限称为阈,其数值称为阈值.在图像中,我们把图像看成一个由像素灰度值组成的数集,那么阈,就是这个图像中,根据目标与背景灰度值的差异,选取的一个合适的分割值.这个值可以确定图像中每一个像素点是属于目标还是属于背景. 阈值分割常用于目标与背景对比度较强,背景与目标灰度比较单一的情况. 阈值分割的第一步是要找到合理的阈值. Halcon提供灰度直方图,可以进行直观的阈值处理. 打开灰度直方图 1.点击菜单栏中的“可视化” 2:在‘’可视化‘菜单栏下…
1.TryCatch tryCatch处理的方式如下: try *可能会出现错误的语句 .... catch(Exception) *获取错误代码 ErrorCode:=Exception[] **对错误的回应 ... ... endtry *程序继续 举个例子: try read_image(Image,'cuowu') //读取一个图像,但图像路径是错的 catch ]=') dev_get_excption_data(Exception,'error_msg',ErrMsg) set_tp…
图像拼接技术就是针对同一场景的一系列图片,根据图片的特征,比如位置,重叠部分等,拼接成一张大幅的宽视角的图像. 图像拼接要求拼接后图像最大程度的与原图一致,失真尽可能的小,并且要尽量做到天衣无缝即没有明显的拼接线或其他拼接痕迹. 图像拼接不能损失原始图像信息 为达到以上目标,图像拼接要求具备以下条件: 1:图像应具有一定的特征性能,拼接正是通过这些特征来进行的. 2:图像需要具有重叠部分,一般情况下,这些重叠部分点图像的1/4以上较为合理. 3.图像的背景亮度差异不能太大,应该低于10个灰度值,…
本例程是用于获取安装螺丝孔在图像中对应的坐标位置,并显示该坐标位,如上图所示. read_image(Image,'rim.png')//读取图像 dev_close_window()//关闭窗口 get_image_size(Image, Width, Height)//获取图像大小 dev_open_window(,,Width/, Height/, 'blue', WindowHandle) dev_display(Image) threshold(Image, Regions, , )/…
threshold(Image:Region:MinGray:MaxGray:) 功能:得到灰度值在最小与最大这间的那些部分.其返回仍然是一个区域. MinGray<MaxGray. 这个算子可以用灰度直方图求取到最佳的域值 如在上一篇中,我们使用灰度直方图求取图像的最佳阈值,我们发现0-56时最佳,将值代入程序中即可. read_image(Image, 'Clip')//读取图像 threshold(Image, Region, , )//对图像进行分割 connection(Region,…
1.什么是图像分割: 图像分割就是把图像中特定的目标提出来,进行处理. 2.为什么要做图像分割: 图像分割是由图像处理到图像分析的关键步骤,准确的来说,没有图像分割,图像处理将无法实现其后续的操作.进行图像处理必须将在图像中发现目标区域,并准确的将目标区域与背景区域进行分割,再处理目标区域的相关特征,从而得到正确的结论. 3.图像分割基于什么原理 图像分割本质上是一种二值化的处理过程,可以是一种基于背景基础的目标分割,也可以是特定区域目标与区域之间的分割,或是存在于混合背景之间的分割. 4.图像…
在PC硬件体系结构里,速度最快的存储器是CPU里面的寄存器,接着到二级缓存,再到系统RAM内存,最后才到硬盘.因为这种体系结构,就决定了操作系统对文件的操作方式,或者说是最优化的算法.比方操作系统接收到写文件的数据时,就会先把数据保存到RAM里,然后在合适的时间或者合适的数据量时再写到硬盘里.但有时候我们希望数据一定要保存到硬盘里,而不是保存在RAM里,这时就须要使用函数FlushFileBuffers来把RAM里的数据保存到硬盘里.文件的结构是一个有序的队列,有头有尾,当读写文件后,就会移动文…
1.SetWindowLong和GetWindowLong 函数原型: LONG SetWindowLong( __in HWND hWnd, __in int nIndex, __in LONG dwNewLong ); LONG GetWindowLong( __in HWND hWnd, __in int nIndex ); 这两个函数用于改变和获取窗口属性的功能. 其中参数nIndex中有很多种选择值,其中 GWL_USERDATA可以在不同窗口中共享数据. 例如:在创建Tab Cont…
子曰:类型转换中toString 和valueOf 的联系与区别分析 首先是看看ES5 的规范是如何进行说明的 在这里有几个基础知识点需要了解一下: [[Class]] [[Class]] 属于Object 的内部属性,值的类型返回为String,其作用是,说明规范定义的对象分类的一个字符串值. ES5 规范的每种内置对象都定义了[[Class]] 内部属性值.宿主对象的[[Class]] 内部属性值可以是除了"Arguments". "Array". "…
Halcon可以操作普通文本文件,也可以操作二进制文件.如下图所示,只需要设置“FileType”参数的取值即可明确是操作文本文件还是二进制文件: 下面的程序是操作一个.txt文本文件的完整代码: * 'input':将已存在的输入文件以ASCII格式打开以供读取.该文件打开以后,将不能再往里面写东西. * 'output':将打开一个新的输出文件,以便以ASCII格式写入.如果有同名文件,则原文件将先被删除. * 'append':将已存在的输出文件在文件末尾打开,以便以ASCII格式追加写入…
功能 自己主动获取CSDN文章列表,并对每篇文章添加点击量. 源代码 import urllib.request import re import time import random from bs4 import BeautifulSoup p = re.compile('/a359680405/article/details/........') #自己的博客主页 url = "http://blog.csdn.net/a359680405" #使用build_opener()是…
特别声明:此篇文章内容来源于@CHRIS COYIER 的Centering in CSS:A Complete Guide 子曰:CSS 居中是一个非常常见的问题,无论是在项目中,还是在各种面试资料中,这篇文章进行了系统的解答 本文为个人翻译 我们总是抱怨使用CSS居中. 为什么要这么辛苦? 这个问题不是说很难去解决,而是由于不同的情况有很多不同的方式来实现,我们难以抉择去选择那一个方式去解决它. 所以我们希望通过决策树来更处理它. 我需要居中... 水平居中 inline 或inline-*…
子曰:学好百分值,考试考百分 首先是确定CSS 中的percentage 都可以应用在CSS 中的哪些属性,以及这些属性的值如何进行计算的,参考CSS 参考手册进行统计. 定位(Positioning) top 用百分比来定义距离顶部的偏移量.百分比参照包含块的高度.可以为负值. right 用百分比来定义距离右边的偏移量.百分比参照包含块的宽度.可以为负值. bottom 用百分比来定义距离底部的偏移量.百分比参照包含块的高度.可以为负值. left 用百分比来定义距离左边的偏移量.百分比参照…
Mediator模式,用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 比较典型的例子是联合国.QQ群等.比如,如果中国有事需要通知世界各国,可以通过联合国这一个机构,QQ群可以接收并发布每个成员的消息. /* * file: Mediator.h * brief: Created by night at 2016.12.07 */ #ifndef __MEDIATOR_H__ #define __MEDIATOR_H…
HALCON形状匹配讲解 https://blog.csdn.net/linnyn/article/details/50663328 https://blog.csdn.net/u014608071/article/details/78564596 2016年02月14日 16:09:40 赵一一 阅读数:18149   很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总是抽不出时间.去年有过一段时间的集中学习,做了许多的练习和实验,并对基于HDevelop的形状匹配算法的参数优…
14.1  Access 1. get_region_chain 功能:一个对象的轮廓(contour)作为链式码. 2. get_region_contour 功能:查询一个目标的轮廓(contour). 3. get_region_convex 功能:查询突起的外表作为轮廓(contour). 4. get_region_points 功能:查询一个区域的像素数. 5. get_region_polygon 功能:用一个多边形近似获取区域. 6. get_region_runs 功能:查询一…
主类 子类 功能 Win32API SHGetSpecialFolderLocation 获取系统特殊文件夹路径(SHGetSpecialFolderLocation) 通过 SHGetSpecialFolderLocation.SHGetPathFromIDList 函数获取常用路径 OutputDebugString 使用OutputDebugString将调试信息输出 MakeSureDirectoryPathExists MakeSureDirectoryPathExists C/C++…
 CreateEvent的使用方法收藏 新一篇: PreCreateWindow的作用和用法 | 旧一篇: VC中_T()的作用 function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key…
以前都是用Springboot+jdbcTemplate实现CRUD 但是趋势是用mybatis,今天稍微修改,创建springboot + mybatis 的项目,实现简单的CRUD  上图是项目的目录结构,创建一个user实体,包含id,姓名,手机,密码,flag等信息,然后对用户进行增删查改. drop table if exists user; CREATE TABLE `user` ( id tinyint(4) NOT NULL AUTO_INCREMENT, name varcha…