vb连接halcon读取图像
Halcon读取文件目录中图像的三种方法
Halcon读取文件目录中图像的三种方法第1种方法:读取单一图像read_image(Image,'fabrik')这种方式可以快速的读取软件自身携带的库图像文件,系统设定了库图像映像文件的快速读取方式,我们也可以通过绝对地址的方式来读取指定的目录文件:read_image(Image1,'E:/Halcon一日一练/参考资料/images/图片1.jpg')图像设定的映像文件目录可以进行关闭,set_system函数可以对映像文件目录进行关闭,关闭之后必须读取图像的绝对地址,否则,系统将会报错,set_system('image_dir','false')//关闭图像映像文件read_image(Image,'fabrik')//此时系统会报错在关闭图像文件目录的情况下,再读取图像将会出现异常,此时我们需要重新设置默认读取文件的目录:set_system('image_dir','C:\\ProgramFiles\\MVTec\\HALCON-12.0\\images')read_image(Image,'fabrik')如果想要读取自身设定的图像目录,则是如下方式:set_system('image_dir','E:\\Halcon一日一练\\参考资料\\images')read_image(Image,'图片1')操作完成后一定要将系统设定回来,并确认目录定义符一定是上斜线set_system('image_dir','C:\\ProgramFiles\\MVTec\\HALCON-12.0\\images')set_system('image_dir,'true')第2种方法:读取一组图像则需要对图像文件的保存名称有一定的规则要求,一般按以下格式设定:'name_number.imageform'首先保存为图像的名称,下划线后面追加图像数字序列,这种方式有利于图像的循环读取,看看下面的语句:for j:= 1 to 9 by 1read_image(Image,'fonts/arial_a'+J+'.png')//读取图像dev_display(Image)//显示图像stop()//暂停endfor我们将C:\Program Files\MVTec\Halcon-12.0\images\fonts目录下的9个图像文件依次读取并且显示出来,中间的+号代表了字符间的合并。
Halcon学习之二:摄像头获取图像和相关参数
Halcon学习之二:摄像头获取图像和相关参数Halcon学习之二:摄像头获取图像和相关参数1、close_all_framegrabbers ( : : : )关闭所有图像采集设备。
2、close_framegrabber ( : : AcqHandle : )关闭Handle为AcqHandle的图像采集设备。
3、open_framegrabber ( : : Name, HorizontalResolution, VerticalResolution, ImageWidth, ImageHeight, StartRow, StartColumn, Field, BitsPerChannel, ColorSpace, Generic, ExternalTrigger, CameraType, Device, Port, LineIn : AcqHandle ) 打开图像采集设备参数信息:Name:图像采集设备的名称HorizontalResolution和VerticalResolution:分别指预期的图像采集接口的水平分辨率和垂直分辨率ImageWidth和ImageHeight:指预期图像的宽度部分和高度部分。
StartRow和StartColumn:指显示预期图像的开始坐标Field:预期图像是一半的图像或者是完整图像BitsPerChannel:每像素比特数和图像通道ColorSpace:输出的色彩格式的抓住图像{gray、raw、rgb、yuv、default} Generic:通用参数与设备细节部分的具体意义。
ExternalTrigger:是否有外部触发CameraType:使用相机的类型Device:图像获取设别连接到的设备Port:图像获取设别连接到的端口LineIn :相机输入的多路转接器AcqHandle:图像获取设备的Handle4、grab_image ( : Image : AcqHandle : )获取AcqHandle的图像采集设备的Image。
Halcon采集图像ImageAcquisition解析
Halcon采集图像ImageAcquisition解析很明显,图像的采集是所有机器视觉应⽤中必须解决的问题,HALCON提供了为各种图像采集设备执⾏这种交互的接⼝,图像采集的任务被简化为⼏⾏代码,只需⼏个操作符的调⽤,更重要的是,这种简单并不是以限制可⽤功能为代价。
使⽤HALCON,可以在不同的时间模式下从不同的采集设备和相机中获取图像。
除了从相机中获取图像外,HALCON还可以将存储在⽂件中的图像显⽰出来(⽀持的⽂件格式:BMP、TIFF、GIF、JPEG、PNG、PNM、PCX、XWD)。
基本概念⽤HALCON获取图像基本上只需要三个步骤,⽽从⽂件中读取图像则更为简单:只需调⽤read_image操作符即可。
打开图像采集设备如果想从⼀个摄像机中获取图像,第⼀步就是要连接到这个设备。
HALCON可以解决所有与设备相关的细节问题;只需要调⽤算⼦open_framegrabber,指定相应的图像采集接⼝名称。
还有⼀个 "虚拟 "的图像采集界⾯叫File。
顾名思义,这个 "抓帧器 "读取⽂件中的图像,以及所谓的图像序列⽂件。
后者是Halcon特有的⽂件类型,典型的扩展名是.seq,它们包含⼀个图像⽂件名的列表,⽤新的⾏隔开(可以⽤⽂本编辑器很容易地创建它),如果你链接到这样的序列,随后调⽤grab_image就会返回⽂件中指定的序列图像。
然后,不必创建⼀个序列⽂件,⽽只需指定⽬录名称⽽不是序列⽂件作为参数'CameraType'的值。
后续调⽤grab_image会返回在指定的图像⽬录中找到的图像。
如果想⽤图像⽂件序列或者在真实的图像采集设备上来测试应⽤程序,那么以上这两种⽅法都很有⽤。
获取图像连接到设备后,只需调⽤grab_image就可以获取图像。
要从磁盘中加载图像,需要使⽤read_image,图像会在当前⽬录中和当前设备环境变量HALCONIMAGES指定的⽬录中被搜索到。
HALCON入门(2)在HDevelop中加载图像
HALCON入门(2)在HDevelop中加载图像整理编辑:YWB对于机器视觉而言大多数的处理都是基于图像进行的。
在HDevelop中我们有两种获取图像的方式,从本地加载和从图像采集设备获取。
1从本地加载HDevelop提供一个基于文件的图像采集接口,我们可以将特定文件夹下的文件按照一定顺序读入内存。
1.1通过read_imageread_image拥有两个参数,第一个参数为输出图像、第二个参数为图像路径。
其中路径参数可以使用相对于%HALCONIMAGES%的相对路径、相对于hdev文件所在目录的相对路径以及绝对路径。
调用示例:read_image (Image, 'printer_chip/printer_chip_01')有两种方法可以自动生成read_image代码1、通过“文件”菜单->“读取图像”选项选择并打开文件。
2、使用鼠标直接将图像文件拖入HDevelop界面中。
1.2通过图像采集助手HDevelop提供一个基于文件的图像采集接口,我们可以将特定文件夹下的文件按照一定顺序读入内存。
1.2.1打开助手通过“助手”菜单->“打开新的Image Acquisition”或工具栏的相应按钮可以打开图像采集助手。
然后,在连接选项卡中通过“选择路径”或“选择文件”按钮对文件或路径进行选择。
1.2.2选择获取方式在资源选项卡下我们可以通过“图像获取接口”或“图像文件”两种方式加载本地文件。
1.2.2.1如果使用“图像获取接口”方式首先我们需要将设备类型选择为“File”:然后,在连接选项卡中通过“选择路径”或“选择文件”按钮对文件或路径进行设置:1.2.2.2如果使用“图像文件”方式我们则可以直接在资源窗口对文件以及路径进行设置。
1.3代码生成配置结束后我们就可以通过“代码生成”选项卡下的“插入代码”按钮,生成相关代码并插入到代码窗口指定位置。
大家可能会奇怪,既然在插件的配置过程中都需要设置文件或者路径,那么前面的所提及的两种获取方式又有什么区别呢?这个问题的答案就在我们刚刚升成的代码中了。
VBA在图像处理中的应用技巧
VBA在图像处理中的应用技巧在当今科技日新月异的时代,数字图像处理的应用越来越广泛,无论是从个人使用到商业领域,都可以看到图像处理技术的身影。
而作为一个强大的编程语言,Visual Basic for Applications(VBA)能够为图像处理提供很多有用的功能和技巧。
本文将介绍一些VBA在图像处理中的应用技巧,帮助您更好地利用VBA来处理和编辑图像。
1. 图像的读取与保存VBA可以通过使用合适的库来加载和保存图像。
通过引用适当的对象库,比如Windows 图像处理组件(Windows Imaging Component),您可以使用VBA代码加载、保存和操作图像。
在加载图像时,您可以使用文件对话框让用户选择需要处理的图像文件,然后使用VBA 代码读取图像数据。
在编辑和处理完图像后,您可以使用VBA代码保存图像到指定的目录。
2. 图像的大小和尺寸调整使用VBA,您可以轻松调整图像的大小和尺寸。
通过访问图像对象的属性,您可以获取图像的宽度和高度,并根据需要进行调整。
例如,您可以使用VBA代码将图像缩放到特定的尺寸,或者根据比例缩放图像的大小。
这样,您可以适应不同的要求,比如将图像用于网页显示或者打印输出。
3. 图像的滤镜和效果VBA可以通过调用系统自带的图像处理滤镜和效果来改变图像的外观。
通过使用VBA中的API函数,您可以调用系统自带的图像处理函数,如模糊、锐化、亮度调整等,来使图像产生不同的效果。
这些滤镜和效果可以改变图像的色调、对比度、饱和度等,使得图像更加鲜艳和吸引人。
4. 图像的剪裁和裁剪VBA可以帮助您对图像进行剪裁和裁剪。
通过使用VBA代码,您可以选择要保留的图像区域,并将其保存到新的图像文件中。
这样,您可以只保留感兴趣的部分,去除无关的背景或其他干扰因素。
这对于制作网页图像、商品展示或者个人照片编辑非常有用,可以提高图像的专业度和美观度。
5. 图像的旋转和翻转VBA可以帮助您对图像进行旋转和翻转操作,使图像朝向更加符合需求。
halcon教程
halcon教程Halcon是一种广泛应用于机器视觉领域的软件库,它提供了丰富的图像处理和分析功能。
本教程将介绍Halcon的基本使用方法,涵盖图像读取、预处理、特征提取、目标检测等常用操作。
1. 图像读取使用Halcon的read_image函数可以从文件中读取图像数据。
可以通过指定文件路径来读取图像,例如:read_image(Image, 'image.jpg')2. 图像预处理在图像处理之前,通常需要对图像进行一些预处理操作,以改善后续处理的效果。
Halcon提供了丰富的预处理函数,如灰度化、平滑、滤波等。
例如,可以使用以下代码对图像进行灰度化处理:gray_image(Image, GrayImage)3. 特征提取Halcon提供了多种特征提取函数,可以从图像中获取有用的信息。
常用的特征包括边缘、角点、斑点等。
例如,可以使用find_edges函数在图像中提取边缘信息:find_edges(GrayImage, Edges, 10, 40)4. 目标检测目标检测是机器视觉中的一个重要任务,Halcon提供了多种目标检测函数和算法。
例如,可以使用find_shape_models函数对图像中的形状进行检测:find_shape_models(GrayImage, Model, AngleStart, AngleExtent, MinScore, NumMatches, SubPixel, Greediness, Result)以上是一些Halcon的基本用法,通过学习这些基础知识,您可以在机器视觉应用中更好地运用Halcon库进行图像处理和分析。
希望这些信息对您有所帮助!。
Halcon结合C#二次开发读取图片并处理图片
Halcon结合C#二次开发读取图片并处理图片在Halcon12.0中的程序编辑器编辑程序:read_image(Image,'E:/Tulips.jpg')get_image_size(Image,Width,Height)rgb1_to_gray(Image,GrayImage)文件——导出打开VS2010 新建项目名称WindowsFormsHalcon——确定右键WindowsFormsHalcon——属性更改目标框架为.NET Framework4然后在“生成”选项下更改目标平台为Any CPU(其他均不用修改)在工具箱栏右键——选择项halcondotnet.dll——打开出现如下界面——确定在工具箱中出现控件HWindowControl在Form1窗体中拖入控件HWindowControl,两个Button按钮控件,OpenFileDialog控件在VS2010中打开之前导出的Halcon程序,修改程序后写入窗体程序如下:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using HalconDotNet; //添加引用HalconDotNetnamespace WindowsFormsHalcon{public partial class Form1 : Form{HDevelopExport HD = new HDevelopExport(); //添加代码string ImagePath;public Form1(){InitializeComponent();this.btnHandle.Enabled = false; //添加代码,读取图片前处理图片按钮是不可用的}//读取图片按钮操作private void btnRead_Click_1(object sender, EventArgs e){openFileDialog1.Filter = "JPEG文??件tt|*.jpg*|BMP文??件tt|*.bmp*|TIFF文??件tt|*.tiff*";openFileDialog1.RestoreDirectory = true;openFileDialog1.FilterIndex = 1; //设置对话框属性if (openFileDialog1.ShowDialog() == DialogResult.OK){ImagePath = openFileDialog1.FileName;HD.ReadImage(hWindowControl1.HalconWindow, ImagePath); // void HDevelopExport.ReadImage(Htuple Window,string path)this.btnHandle.Enabled = true; //读取图片后处理图片按钮可用}}//处理图片按钮操作private void btnHandle_Click_1(object sender, EventArgs e){HD.ImagePro();this.btnHandle.Enabled = false; //处理图片后处理图片按钮不可用}}public partial class HDevelopExport{public HTuple hv_ExpDefaultWinHandle; //Htuple--Halcon tuple,tuple是Halcon特有的数据结构,可用于图形和控制变量,是与外界程序数据交互的通道HObject ho_Image, ho_GrayImage;// Main procedurepublic void InitHalcon(){// Default settings used in HDevelopHOperatorSet.SetSystem("do_low_error", "false");}//读取图片public void ReadImage(HTuple Window, string path){hv_ExpDefaultWinHandle = Window;HOperatorSet.GenEmptyObj(out ho_Image);//创建一个空的tuple对象ho_Image.Dispose();HOperatorSet.ReadImage(out ho_Image, path);HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);}//处理图片public void ImagePro(){HOperatorSet.Rgb1ToGray(ho_Image, out ho_GrayImage);HOperatorSet.DispObj(ho_GrayImage, hv_ExpDefaultWinHandle);ho_GrayImage.Dispose();}}}程序运行后点击“读取图片”选择图片路径出现如下界面:点击“打开”点击“处理图片”。
halcon+vb检测光学玻璃元件实例
halcon+vb检测光学玻璃元件实例发布于:2013-08-20 10:05自然光下的玻璃元件实图环型光源下的玻璃元件图halcon 代码open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'gray', -1, 'false', 'def ault', 'Microvision MV-1400UC Digital Camera', 0, -1, AcqHandle)*打开摄像头grab_image_start (AcqHandle, -1)*开始铺货图像grab_image_async (Image, AcqHandle, -1)*捕获第一帧图像get_image_size (Image, Width, Height)*获得图像大小dev_open_window (0, 0, Width/6, Height/6, 'black', WindowHandle)*打开适合大小的窗口,应为相机是1400万像素所以图想太大窗口被我缩小了。
while (true) *无限循环trygrab_image_async (Image, AcqHandle, -1)*捕获一帧图像dev_display (Image)*显示图像smooth_image(Image, ImageSmooth, 'deriche2', 0.5)*平滑图像threshold (ImageSmooth, Regions,125, 255)*阈值处理*这个表面有些灰尘呵呵不过可以当噪点过滤掉的area_center (Regions, Area1, Row3, Column3)*获得区域中心点gen_contour_region_xld(Regions, Contours, 'border_holes')*将阈值处理后获得的区域转换成xldsmooth_contours_xld(Contours, SmoothedContours, 5)*平滑xldselect_contours_xld (SmoothedContours, SelectedContours1, 'contour_length', 4000, 8000, -0.5, 0.5)*选择长度在4000到8000像素之间的xldselect_contours_xld (Contours, SelectedContours2, 'contour_length', 10000, 13000, -0.5, 0.5)*选择长度在10000到13000之间的xld*选择后得到的xld图形就是最长的几段xld 其余的全部过滤掉了segment_contours_xld (SelectedContours2, ContoursSplit, 'lines_ellipses', 0, 2, 2) *对方性xld进行分割分割主要是为了去除尖刺突出的xld*选取横向角度上的多边形而尖刺突出部分就被忽略了pi := acos(0)*2Eps := pi*2 /7select_contours_xld (ContoursSplit, SelectedContours3, 'direction', pi/2 + Eps, pi/2 - Eps, -0.5, 0.5)*选择横向角度的多边形select_contours_xld (SelectedContours3, SelectedContoursFinal, 'length', 20, 200000, -0.5, 0.5)*选择横向角度的长度在20到200000的多边形觉得这一部多余呵呵不过是多次测试参数后才发现多余之后就懒得改了。
VBA中的图像识别与自动化操作技巧
VBA中的图像识别与自动化操作技巧VBA(Visual Basic for Applications)是一种宏语言,可以用于在微软的Office套件中自动执行任务和操作。
在VBA中,图像识别和自动化操作技巧可以帮助用户实现更高效的办公工作。
本文将介绍如何在VBA中应用图像识别和自动化操作技巧。
首先,我们要了解如何进行图像识别。
在VBA中,可以使用Windows API函数来实现图像识别。
Windows API函数是Windows操作系统提供的一组函数库,可以访问系统的底层功能。
通过调用这些函数,可以实现图像的识别和自动化操作。
要在VBA中使用Windows API函数进行图像识别,需要先将相应的API函数声明在代码模块中。
例如,要使用FindWindow函数来查找某个窗口,可以在代码模块中声明如下:```Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long```上述代码将FindWindow函数声明为一个Long型的函数,可以通过指定窗口的类名和窗口标题来查找窗口,并返回窗口的句柄。
利用FindWindow函数找到目标窗口后,我们可以使用SendMessage函数来发送消息给窗口进行自动化操作。
例如,要点击某个窗口中的按钮,可以使用以下代码:```Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongConst WM_COMMAND As Long = &H111Const BN_CLICKED As Long = 0Dim hWnd As LongDim buttonID As Long'找到目标窗口的句柄hWnd = FindWindow("Notepad", "Untitled - Notepad")'找到按钮的IDbuttonID = GetDlgItem(hWnd, ID_BUTTON)'发送点击按钮的消息SendMessage hWnd, WM_COMMAND, buttonID, BN_CLICKED```上述代码使用了SendMessage函数发送了一个点击按钮的消息给目标窗口。
使用 VBA 进行图像识别和处理
使用 VBA 进行图像识别和处理图像是现代社会中广泛使用的一种媒体形式,无论是在数字图像处理、计算机视觉、医学图像分析还是自动化等领域,图像处理都扮演着重要角色。
在许多任务中,自动化处理和识别图像的能力是必不可少的。
VBA(Visual Basic for Applications)是一种由Microsoft开发的编程语言,广泛应用于Microsoft Office套件中。
它是一种强大而灵活的工具,可用于自动化任务、处理数据和创建用户界面等。
在本文中,我们将探讨如何使用VBA进行图像识别和处理。
第一步,我们需要获取VBA的开发环境。
打开Microsoft Office应用程序(例如Excel或Word),然后点击“开发者”选项卡。
如果没有“开发者”选项卡,请在“文件”选项卡中选择“选项”,然后在“自定义功能区”中勾选“开发者工具”。
在VBA编辑器中创建新的模块,该模块将包含我们的图像识别和处理代码。
为方便起见,我们将使用Excel作为示例应用程序。
首先,我们需要添加对图像处理库的引用。
在VBA编辑器中,点击“工具”菜单,然后选择“引用”。
在出现的对话框中找到并勾选“Microsoft Wind ows Common Controls 6.0",然后点击“确定”。
接下来,我们将编写代码来实现图像的导入和显示。
以下是一个示例代码,可以将选取的图像导入到Excel工作表中。
```vbaSub ImportImage()Dim imagePath As StringDim img As ImageimagePath =Application.GetOpenFilename("Images,*.jpg;*.jpeg;*.gif;*.png;*. bmp")If imagePath <> "False" ThenSet img = ActiveSheet.Pictures.Insert(imagePath)' 调整图像大小和位置With img.ShapeRange.LockAspectRatio = msoFalse ' 取消纵横比锁定.ShapeRange.Width = 300 ' 设置图像宽度.ShapeRange.Height = 300 ' 设置图像高度.Left = 50 ' 设置图像左侧位置.Top = 50 ' 设置图像右侧位置End WithEnd IfEnd Sub```通过运行上述代码,您可以选择一张图片,并将其导入到当前活动的工作表中。
halcon连接图像采集设备与halcon多线程采图
Halcon连接采图设备与Halcon多线程采图大恒图像娄训志ØHalcon 介绍ØHalcon 采图知识与常用算子ØHalcon 连接采图设备ØHalcon 连接采图设备编程应用ØHalcon 连接多个采图设备ØHalcon 与多线程采图Ø相关背景MVTec公司是世界上最著名的机器视觉软件公司,也是世界上标准机器视觉软件的领导者。
MVTec公司具有强大的开发和技术支持能力,50%的成员具有博士学位和机器视觉领域的长期工作经验。
Ø什么是HalconHalcon是在世界范围内广泛使用的机器视觉软件。
用户可以利用其开放式结构快速开发图像处理和机器视觉应用软件。
ØHalcon包含些什么Halcon包含Blob分析,形态学,模式识别与匹配,测量,2、3D相机标定,双目视觉,立体匹配等性能杰出的图像算法,以及图像采集,I/O 通信等工具。
Ø为什么使用HalconHalcon支持Linux/UNIX,Windows32/64位等操作系统,所有的库均可以使用C,C++,C#,VB和delphi编程语言访问,使用比较方便。
Halcon能够从软件上帮助你,解决绝大多数机器视觉软件问题。
Ø图像采集Halcon尽可能地保证与硬件无关,支持大多数图像采集卡,及带有DirectShow和IEEE 1394驱动等的采集设备。
Halcon采集图像的特点•图像采集链接库,独立于其它图像处理链接库•一致的代码模板(磁盘文件和图像采集设备)•支持多个采集设备•同步和异步采集•支持外触发•图像尺寸、图像位数、颜色空间可调•支持颜色查找表•支持与设备相关的参数调整ØImages in Halcona.Multiple channels自动处理多通道图像或单通道图像b.Various pixel types自动处理多型号位深的图像c.Arbitrarily-shaped region of interest 任意形状的感兴趣区域Øimage tuples in Halcon例如:如果想对一批图像进行滤波处理,你只需要调用一次mean_image 算子对图像数组进行操作,避免多次调用mean_image 。
如何在VB、VC和.NET中使用halcon
VC开发
7.结果和预料的优 点区别——图 片显示窗口不 在对话框内! ⊙﹏⊙b汗!!
VC开发
8.检查代码。经过检查,发现问题出在此函数上。我们打开 halcon帮 助文件,在语法选择栏中选择C++,然后在索引出输入 open_window,就可以看到此函数的在C++下的帮助文件了。
open_window(0,130,Width/2,Height/2,0,"visible","",&WindowHandle);
VC开发
MFC程序 1.新建一个空的MFC
工程,document 程序或者dialog 程序。我们这里 新建一个dialog 程序,如右图; 2.建立准备用来进行 图像操作的按钮 (或菜单),明 确按钮(或菜单 )的功能;
VC开发
3.打开从HDevelop中导 出的cpp代码,把 action函数体中用到 函数,根据功能的不 同,分别拷贝至图像 处理菜单或按钮对应 的代码处;
C#开发
9.编译,运行,我们就可以看到预期的效果了。
运行打包
1、打开C:\Program Files\MVTec\HALCON-9.0\bin\x86sse2-win32文 件夹,复制halconcpp.dll和用到的dll,如hAcqDahengCAM.dll到 可执行文件所在的文件夹;
2、复制license到相同文件夹; 3、复制文件夹C:\Program Files\MVTec\HALCON-
VB开发
3.添加控件。工程菜 单===>部件===> 控件,勾选上 halcon/com library v1.7, 确定。我们可以 看到了新的组件 图标了 ,HWindowXCtrl控 件用于显示图像 。
VB环境下halcon
德国HALCON是一款具有交互式编程开发的图像处理软件,可导出VB,C/C++,C#等代码。
由于使用HALCON图像处理软件要有一定条件(如需外部图像传感器,工件运动控制机构),制约了更多的软件开发者参与,因而其应用资料甚少(包括网络)。
笔者在开发LED视觉自动焊线机时,使用VB6.0作为开发平台,利用HALCON强大图像处理能力,完成了,图像学习,图像识别,图像跟踪,工件精密位移等功能。
下面是开发过程中的部分小程序:1,首先安装HALCON图像处理软件(笔者使用的是HALCON 8.0版本);2,打开VB6.0开发程序,在新建工程列表中选择“标准EXE”并确认;3,在工程(P)选择部件(O),在部件列表中选择“Halcon/COM library V1.6”,再按应用; 4,在Form左边工具箱选择带有小鸟icon的控件,其名为“HWindowXCtrl”,将此控件放置于Form视窗界面上,其名称为“HWindowXCtrl1”;5,点击控件HWindowXCtrl1,设置Height=8640,Width=11520,这时查看HWindowXCtrl1属性,HHeightPixels=576,HWidthPixels=768;当然HWindowXCtrl1也是黑色的。
程序例子一,加载图片1,声明:Dim Window As HWindowXDim ImageIc As New HImageX2,在Form下写入下面语句:Set Window = HWindowXCtrl1.HalconWindow3,放置一按钮,设置Command1.Caption为"加载图片",并写入以下语句:Call ImageIc.ReadImage("Image1.bmp")Call Window.DispImage(ImageIc) '现示图片4,将所加载的Image1.bmp图片放入其开发程序文件中,按"加载图片"按钮就可运行程序了! 二,画坐标线1,再放置一按钮,设置Command2.Caption为"画坐标线",并写入以下语句:Call Window.SetColor("red") '坐标线颜色Call Window.DispCross(288, 384, 800, 0) '画坐标线2,按"画坐标线"按钮就可运行程序了!三,画任意矩形框1,加入声明Dim Row As Double, Col As Double, Phi As Double, Len1 As Double, Len2 As Double 2,再放置一按钮,设置Command2.Caption为"画任意框",并写入以下语句:Call Window.SetDraw("margin") '画线声明Call Window.SetLineWidth(1) '画线线号Call Window.SetColor("red") '画线颜色Row = Window.DrawRectangle2(Col, Phi, Len1, Len2)3,按"画任意框"按钮就可运行程序了!四,放置文字1,再放置一按钮,设置Command3.Caption为"放置文字",并写入以下语句:Call Window.SetColor("green") '文字颜色Call Window.SetFont("宋体") '设置文字字体Call Window.SetTposition(10, 520) '设置显示位置Call Window.WriteString("VB环境下HALCON图像处理的应用") '显示文字2,按"放置文字"按钮就可运行程序了!如果要显示其它数据,增加一标签控件Label,将 Call Window.WriteString("VB环境下HALCON图像处理的应用"改为Call Window.WriteString(Label1.Caption)例:显示时间,Private Sub Timer1_Timer()Label.Caption=TimeCall Window.SetColor("green") '文字颜色Call Window.SetFont("宋体") '设置文字字体Call Window.SetTposition(10, 520) '设置显示位置Call Window.WriteString(Label1.Caption) '显示文字END Sub在坐标上增加刻度:加上列语句就行了Call Window.SetColor("green") '画线颜色Call Window.DispCross(288, 414, 10, 0) '画坐标线Call Window.DispCross(288, 444, 10, 0) '画坐标线Call Window.DispCross(288, 474, 10, 0) '画坐标线Call Window.DispCross(288, 504, 10, 0) '画坐标线Call Window.DispCross(288, 354, 10, 0) '画坐标线Call Window.DispCross(288, 324, 10, 0) '画坐标线Call Window.DispCross(288, 294, 10, 0) '画坐标线Call Window.DispCross(288, 264, 10, 0) '画坐标线在实际使用中,画框线是多样,但常用的有矩形框,任意矩形框,画圆和任意线框.我们就先来画框吧.放置4个Option控件,设置Style 为1,标志(Index)分别是0,1,2,34个Option控件可以标文字或图案(Icon).Dim frame As Integer '画框线变量声明Private Sub Option1_Click(Index As Integer) '画线Select Case IndexCase 0 '当0按钮按下时画矩形框frame = IndexCase 1 '按钮1按下时画任意矩形框frame = IndexCase 2 '按钮2按下时画圆frame = IndexCase 3 '按钮3按下时画任意线frame = IndexEnd SelectEnd Sub在程序使用时,有时需要文件夹来放程序使用时产生的记录,下面这段代码就可自动生成一个文件夹.Dim sa As SECURITY_ATTRIBUTESPrivate Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long Private Type SECURITY_ATTRIBUTESnLength As LongbInheritHandle As Long End TypePrivate Sub Form_Load()Call CreateDirectory(("重要资料"), sa)End Sub。
halcon图像采集
halcon图像采集图像采集:Halcon通过imageacquisition interfaces对各种图像采集卡及各种工业相机进行支持。
其中包括:模拟视频信号,数字视频信号Camera Link,数字视频信号IEEE 1394,数字视频信号USB2.0,数字视频信号Gigabit Ethernet等。
Halcon通过统一的接口封装上述不同相机的image acquisition interfaces,从而达到算子统一化。
不同的相机只需更改几个参数就可变更使用。
Halcon图像获取的思路:1、打开设备,获得该设备的句柄。
2、调用采集算子,获取图像。
1、打开设备,获得该设备的句柄。
grab_image (Image, AcqHandle) //(同步采集)完后处理图像,然后再采集图像。
采集图像的速率受处理速度影响。
grab_image_async (Image, AcqHandle,MaxDelay) //(异步采集),一幅画面采集完后相机马上采集下一幅画面,不受处理速度影响。
其中第三个参数为:MaxDelay,表示异步采集时可以允许的最大延时,本次采集命令距上次采集命令的时间不能超出MaxDelay,超出即重新采集。
图像采集其他相关算子:grab_image_start,该算子开始命令相机进行异步采集。
只能与grab_image_async(异步采集)一起使用。
例子:* Select a suitable image acquisition interface nameAcqNameopen_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0,\'default','default','default',-1,-1,AcqHandle)grab_image(Image1,AcqHandle)//进行同步采集* Start next grabgrab_image_start(AcqHandle,-1.0)//命令相机进行异步图像采集开始* Process Image1 ...* Finish asynchronous grab + start next grabgrab_image_async(Image2,AcqHandle,-1.0)//读取异步采集的图像* Process Image2 ...close_framegrabber(AcqHandle)3、相机参数读写读取相机参数:info_framegrabber( : : Name, Query : Information, ValueList) 写相机参数:set_framegrabber_param( : : AcqHandle, Param, Value : )。
halcon代码案例
halcon代码案例摘要:1.引言2.Halcon代码案例介绍3.案例一:图像读取与显示4.案例二:图像处理与分析5.案例三:图像识别与定位6.案例四:Halcon与其他编程语言的结合应用7.总结正文:Halcon是一款功能强大的机器视觉软件,广泛应用于工业自动化、医疗影像处理等领域。
本文将通过四个案例,向大家展示Halcon在实际应用中的魅力。
首先,我们来看一个简单的图像读取与显示案例。
在这个案例中,我们将使用Halcon读取一张图片,并将其显示在屏幕上。
代码如下:```read_image (Image, "path/to/image")display (Image)```接下来,我们通过一个图像处理与分析案例,来了解如何使用Halcon对图像进行处理。
在这个案例中,我们将实现图像的灰度化、滤波、边缘检测等操作。
代码如下:```read_image (Image, "path/to/image")convert_to_gray (Image, GrayImage)filter_by_laplacian (GrayImage, LaplacianImage)threshold (LaplacianImage, Region, 0, 128)```在第三个案例中,我们将利用Halcon进行图像识别与定位。
这个案例将通过训练一个SVM分类器,来实现对图像中特定目标的识别与定位。
代码如下:```train_svm (Data, Classifier)detect_objects (Image, Classifier, Region)```最后,我们来看一个Halcon与其他编程语言结合应用的案例。
在这个案例中,我们将使用C++与Halcon相互调用,实现一个简单的实时图像处理程序。
代码如下:```#include <iostream>#include <HalconCpp.h>int main(){// 初始化HalconHalconCpp::Halcon::init(".");// 读取图像Halcon::Image Image;read_image (Image, "path/to/image");// 处理图像Halcon::Image GrayImage;convert_to_gray (Image, GrayImage);// 释放资源HalconCpp::Halcon::exit();return 0;}```综上所述,Halcon在机器视觉领域具有广泛的应用,通过本文提供的四个案例,相信大家对Halcon的使用已经有了初步了解。
Halcon的图像获取的实例
Halcon的图像获取的实例重新整理之前旧⽹站上发布过的帖⼦。
⽐较常⽤的⼏个图像获取的例⼦,之前刚刚学习halcon的时候写的,作为⼊门的第⼀步,还是值得再分享⼀下的。
*=================分割线1==================*图像获取的基本代码(1)*读取路径下的图⽚,image1read_image(image1,'F:/Halcon test/barcode/image/1.png')*=================分割线2==================*图像获取的基本代码(2)*读取路径下的多张图⽚,image2imagepath :=[]*建⽴⼀个图像读取的数组,命名为imagepath。
imagepath[0]:='F:/Halcon test/barcode/image/2.png'imagepath[1]:='F:/Halcon test/barcode/image/3.png'imagepath[2]:='F:/Halcon test/barcode/image/4.png'imagepath[3]:='F:/Halcon test/barcode/image/5.png'*读取4张图⽚的路径for i:=0 to 3 by 1read_image(image2,imagepath[i])endfor*=================分割线3==================*图像获取的基本代码(3)*读取⽂件夹下的某些图⽚,image3for i:=1 to 5 by 1read_image(image3,'F:/Halcon test/barcode/image/'+i+'.png')endfor*=================分割线4==================*图像获取的基本代码(4)*读取⽂件夹下的所有图⽚和⽂件夹,image4* Code generated by Image Acquisition 01list_files ('F:/Halcon test/barcode/image', ['files','directories','recursive','max_depth 2','follow_links'], ImageFiles)tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima)$','ignore_case'], ImageFiles) *'ignore_case':忽略⼤⼩写*'\\.' --> '.'for Index := 0 to |ImageFiles| - 1 by 1read_image (Image4, ImageFiles[Index])* Do somethingendfor*=================分割线5==================*图像获取的基本代码(5)*连接摄像机读取图像,image5* Code generated by Image Acquisition 02open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '0', -1, -1, AcqHandle)grab_image_start (AcqHandle, -1)while (true)grab_image_async (Image5, AcqHandle, -1)* Do somethingendwhileclose_framegrabber (AcqHandle)。
HALCON程序指引FORVB
Edited by Foxit PDF EditorCopyright (c) by Foxit Software Company, 2004 - 2007For Evaluation Only.中文手册程序指引for Visual BasicProgrammersGuide for Visual Basic在此章节您将学习如何快速地使用Microsoft Visual Basic 和HALCON/COM 的接口,来发展HALCON 的应用程序,我们将会用简单的步骤来告诉您如何完成。
而这个小程序本身就是一个GUI 的接口。
此外您也可以在其它的范例程序中得到其它的程序代码(如Visual Basic 以及HALCON 的程序代码),让您获得一些额外的信息。
在此章节中所撰写的程序代码早已跟其它的范例,一起放在目录%HALCONROOT%\examples\vb\Manual 中。
然而我们还是希望您照着底下的步骤,在程序中实际操作过一次,如此你才能实际了解如何以Visual Basic 来开发程序,并可藉由这些步骤获取一些额外的信息。
请注意,当您使用HALCON/COM 和Visual Basic 时,您需要在Windows NT 4.0( Service Pack 4)或Windows 2000、Windows Xp 的作业环境下才可使用;此外这些项目的案范例皆由Visual Basic6.0 所产生。
1 First Step: The GUIGo ahead and1.开启Visual Basic,产生一个New Project 的对话框,您可以选择所要的项目型态:选择New 卷标页,在此范例中我们选择Standard EXE 并开启。
2.点选菜单Project 项目中的Components,产生一个Components 对话框,这时对话方块中会列出系统中已安装之组件:选择Controls 标签页,然后加载Halcon/COM library项目。
Halcon与vb编程脱离Halcon开发环境使用
这几天在搞一个小项目。
用Halcon开发图像处理部分然后导出函数代码;用(当我把的工程文件复制到另外一台没有安装Halcon开发程序(HDevelop (SSE2))的图片:错误提示.png
反复按照网上讲的方法折腾,故障依旧,反复试验了2天之后,终于找到了解决此问题的方法除了按照Halcon与其它编程环境编程必须要做的步骤外,还需要做如下三个工作;
反复按照网上讲的方法折腾,故障依旧,反复试验了2天之后,终于找到了解决此问题的方法除了按照Halcon与其它编程环境编程必须要做的步骤外,还需要做如下三个工作;
1. 把license文件放到工程文件目录下 (\bin\Debug目录下);
2.把halcon.dll文件复制到C:\WINDOWS目录下;
3. 创建C:\Program Files\MVTec/halcon然后把help文件夹复制进去。
就成功了 。
数代码;用(VS2010)开发上位机,将Halcon导出的函数引用进来,按照Halcon编程方面的资evelop (SSE2))的电脑上面编程使用时总是报错,错误提示如下图:
了解决此问题的方法,在此发出来和大家分享一下。
三个工作;
了解决此问题的方法,在此发出来和大家分享一下。
三个工作;
alcon编程方面的资料引入了“halcondotnet.dll”, 在安装有Halcon开发程序(HDevelop (SSE2))
HDevelop (SSE2))的电脑上测试,完全正常。
MFC调用HALCON实现相机采图和图像显示
MFC调用HALCON实现相机采图和图像显示一、相机采图1、查询设备信息HTuple Information, Values;info_framegrabber("GigEVision", "device", &Information, &Values);Information用来获取相机信息Values用来获取相机名称2、打开相机HTuple m_hFrameGrabber; //相机句柄open_framegrabber("GigEVision",0,0,0,0,0,0,"progressive",-1,"default",-1,"false","default",Values[0],0,-1,&m_hFrameGrabber);打开第二个相机open_framegrabber("GigEVision",0,0,0,0,0,0,"progressive",-1,"default",-1,"false","default",Values[1],0,-1,&m_hFrameGrabber);注意相机名的调用方法。
3、获取相机参数HTuple m_ImageWidth;get_framegrabber_param(m_hFrameGrabber,"m_ImageWidt h",&m_ImageWidth);4、单帧抓取Hobject * pImage; //图片指针grab_image(pImage,m_hFrameGrabber);由于grab_image函数不能中断执行,因此在多线程中调用时,需要注意对它的原子保护。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
halcon基本,vb连接halcon读取图像,视频halcon学习方法:安装完halcon之后,在开始里出现一些文档quick_guide.pdf快速入门halconhdevelop_users_guide.pdf详细讲解在hdevelop中使用halcon,及hdevelop的操作programmers_guide.pdf详细讲解在高级语言中的使用halconreference_hdevelop.pdf讲解各个算子、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、vb中使用halcon窗口加载图像1.读取图像[cpp]view plaincopyprint?1.read_image (Lena, 'F:/image/lena.jpg')2.get_image_size (Lena, Width, Height)3.dev_close_window ()4.dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle)5.set_display_font (WindowHandle, 14, 'mono', 'true', 'false')6.dev_display (Lena)7.disp_continue_message (WindowHandle, 'black', 'true')8.stop ()2.导出vb的bas代码选择文件/导出,弹出注意:此处选择使用halcon窗口3.vb中调用read_image.bas先看一下read_image.bas的内容,可知在需要的地方直接调用main即可[vb]view plaincopyprint?1....2.3.' Main procedure4.Private Sub action()5.6. ' Local iconic variables7. Dim ho_Lena As HUntypedObjectX8.9.10. ' Local control variables11. Dim hv_Width As Variant, hv_Height As Variant12. Dim hv_WindowHandle As Variant13.14.15. Call Op.ReadImage(ho_Lena, "F:/image/lena.jpg")16. Call Op.GetImageSize(ho_Lena, hv_Width, hv_Height)17. If COMExpWinHandleStack.IsOpen() Then18. Op.CloseWindow (COMExpWinHandleStack.Pop())19. End If20. Call Op.SetWindowAttr("background_color", "black")21. Call Op.OpenWindow(0, 0, Tuple.TupleDiv( _22. hv_Width, 2), Tuple.TupleDiv(hv_Height, 2), 0, "", "", hv_WindowHandle)23. COMExpWinHandleStack.Push (hv_WindowHandle)24. Call set_display_font(hv_WindowHandle, 14, "mono", "true", "false")25. If COMExpWinHandleStack.IsOpen() Then26. Call Op.DispObj(ho_Lena, COMExpWinHandleStack.GetActive())27. End If28. Call disp_continue_message(hv_WindowHandle, "black", "true")29. HDevelopStop30.End Sub31.32.33.34.#If Not NO_EXPORT_APP_MAIN Then35.Sub InitHalcon()36. ' Default settings used in HDevelop37. Call Op.SetSystem("do_low_error", "false")38.End Sub39.40.Sub Main()41. Call InitHalcon42. Call action43.End Sub44.45.#End If3.1.新建一个exe 的project ,然后保存,然后添加read_image.bas 文件到此project3.2.添加halcon/com 控件:选择project/components ,弹出的菜单中3.3.在工具箱中会出现HWindowXCtrl 控件,拖进form1,然后再拖一个commandbutton,双击commanbutton,加入代码 [vb] view plaincopyprint? 3. End Sub Private Sub Command1_Click()Call Main 3.4.按F5运行程序,然后单击command1,弹出 这是一个halcon 界面库构造的窗口,脱离vb 窗口的。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 vb 中使用hwindowxctrl 的窗口加载图像 在上面第2步选择使用导出模板。
导出的代码如下,可知需要调用的过程是inithalcon 和runhalcon [vb] view plaincopyprint? 1. ... 2. ' Main procedure 3. Private Sub action() 4. 5. ' Local iconic variables 6. Dim ho_Lena As HUntypedObjectX 7. 8. 9. ' Local control variables 10. Dim hv_Width As Variant, hv_Height As Variant 11. Dim hv_WindowHandle As Variant 12. 13. Call Op.ReadImage(ho_Lena, "F:/image/lena.jpg") 14. Call Op.GetImageSize(ho_Lena, hv_Width, hv_Height)15. 'dev_close_window(...); 16. 'dev_open_window(...); 17. Call set_display_font(hv_ExpDefaultWinHandle, 14, "mono", "true", "false") 18. Call Op.DispObj(ho_Lena, hv_ExpDefaultWinHandle) 19. Call disp_continue_message(hv_ExpDefaultWinHandle, "black", "true") 20. HDevelopStop 21. End Sub 22. 23. 24. 25. Sub InitHalcon() 26. ' Default settings used in HDevelop 27. Call Op.SetSystem("do_low_error", "false") 28. End Sub 29. 30. Sub RunHalcon(ByRef Window As HWindowX) 31. hv_ExpDefaultWinHandle = Window.HalconID 32. Call action 33.End Sub在上面的3.3中拖入一个commandbutton2,双击添加代码 [vb] view plaincopyprint? 1. Private Sub Form_Load() 2. Call InitHalcon7. End Sub 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 vb 中使用hwindowxctrl 的窗口加载视频 1.插入摄像头,只要qq 视频模块可以使用的摄像头,halcon 基本都可以使用吧 2.在halcon 中新建一个工程,文件/新程序 3.选择助手/打开新的imageaquisition ,点击检测,会检测到directshow 观察连接标签栏里已经识别出中微星的摄像头,可以点击连接,实时查看一下。
颜色空间中可以选择以灰度方式采集图像。
4.选择生成代码标签,如下。
同步采集。
选择插入代码,如下 [vb] view plaincopyprint? 1. * Code generated by Image Acquisition 01 2. open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'de fault', 'Vimicro USB PC Camera (ZC030x)', 0, -1, AcqHandle) 3. while (true) 4. grab_image (Image, AcqHandle) 5. * Do something 6. endwhile 7. close_framegrabber (AcqHandle)其中open_framegrabber用于打开摄像头并配置,此函数在调用时会测试要指定的设备,并锁定该设备。