Ⅰ halcon如何设置一个循环,来异步采集图像,接口是大恒相机,求代码,初学者,见谅!
用助手---打开新的Image Acquisition---图像获取接口(选择对应的)---代码生成---插入代码
下面是DirectShow接口的代码
* Code generated by Image Acquisition 02
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', 'Integrated Camera', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
grab_image_async (Image, AcqHandle, -1)
* Do something
endwhile
close_framegrabber (AcqHandle)
Ⅱ Halcon加密狗运行狗驱动如何安装
Halcon10、11、12安装位置:
安装目录D:Program FilesMVTecHALCON-xx.0FLEXlmx86sse2-win32flexid9(xx为10、11、12)
Ⅲ halcon连接电脑自带相机失败,显示device cannot be initialized
摘要 亲爱的---UG NX12.0提示Package mole cannot be initialized是设置错误造成的,解决方法为:
Ⅳ halcon中怎么获取多边形的外接椭圆
外接椭圆不唯一哦,外接圆还差不多
Ⅳ 能介绍下怎么用halcon编程吗! 谢谢!
你如果安装了Halcon的话,里面会附有程序员文档,说明了在各种编程语言如何操作Halocn提供的函数或者使用导出的类,并且在Example中提供有关具体应用的例子。常用的方法是先在Halocn提供的集成开发环境中做实验,然后导出成某种编程语言,再应用到自己的程序中。PS:居然没有悬赏分。
Ⅵ HALCON机器视觉软件的HALCON选择
近年来,由于Machine Vision技术的发展,这种可以取代人眼,对重复工作不会疲劳,精度高且稳定的特质,促成了高科技业,例如电子业产能的大幅提升。而MVTec公司更是不断的与学术界合作,并且将最新的学术研究成果纳入其中,不但使自己的技术处于业界领导地位,同时也将machine vision技术推向更高的境界。让您选择HALCON出于以下3点理由:
1.为了让使用者能在最短的时间里开发出视觉系统,HALCON包含了一套交互式的程序设计界面HDevelop,可在其中以HALCON程序代码直接撰写,修 改,执行程序,并且可以查看计算过程中的所有变量,设计完成后,可以直接输出C、C++、VB、C#、vb等程序代码,套入您的程序中。 HDevelop同时和数百个范例程序链接,除了个别计算功能的说明,您也可以随时依据不同的类别找到应用的范例,方便参考。此外,以问题为导向的手册, 可以让您找到最适切的使用说明以及作业观念。
2.HALCON不限制取像设备,可以自行挑选合适的设备。原厂已提供了60 余种相机的驱动链接,即使是尚未支持的相机,除了可以透过指标(pointer)轻易的抓取影像,还可以利用HALOCN开放性的架构,自行撰写DLL文件和系统连接。
3.使用HALOCN,在设计人机接口时没有特别的限制,也不必特别的可视化组件,您可以完全使用开发环境下的程序语言,例如visual studio、.NET、Mono等等,架构自己的接口,end user看不到您的开发工具,而且在执行作业的机器上,只需要很小的资源套件。

Ⅶ halcon中如何将自己封装的算子放到哪个文件夹
安装VMware-workstation10.0,并创建最小硬件系统的虚拟机环境。注意虚拟机硬盘接口为IDE。具体操作:创建新的虚拟机→经典→稍后安装操作系统→选择windows 7→在可用空间超过20G的磁盘分区新建一个文件夹,并选中它作为虚拟机的位置→下一步,下一步,完成→编辑虚拟机设置→删除(SCSI硬盘,网卡,声卡,USB,打印机)→添加IDE硬盘→下一步……完成。如下图:
给虚拟机硬盘分区。(1)双击虚拟机硬盘→选择“使用ISO镜像文件”→选中U盘装机助理→确定。(2)开启虚拟机,同时鼠标点进虚拟机并按F2进虚拟机BIOS→在Boot项将CD-ROM调为第一启动项(用上下键配合减号键操作),保存,重启→进win7 PE→打开DiskGenius→按F6快速分区(主分区+逻辑分区),如下图→分完关闭虚拟机。
给虚拟机安装win7原版系统。(1)双击虚拟机硬盘→选择“使用ISO镜像文件”→选中win7原版ISO→确定。(2)开启虚拟机→鼠标点进虚拟机,按任意键读取ISO文件→接下来就和真机安装win7一样了……安装类型选择自定义,然后选择安装在主分区……→经过一段时间,系统来到如下图的一步→此时不要点下一步;
为什么不要点下一步呢?→因为我们封装的系统最好开启Administrator用户,以后获得高级权限。而此时有种简易的操作方法不会对系统生成任何残留(这是S大提供的方法)。
此时按Ctrl+Shift+F3,虚拟机突然重启,最后进入系统。进入系统后,桌面竟然冒出个“系统准备工具”,而且它是每次重启都会出现,不用理会,取消或X掉。接着关闭虚拟机。
给虚拟机系统做备份。备份的目的是之后操作失误还有得挽回,所以不是最终结果,只要快速压缩就可以了。(1)双击虚拟机硬盘→选择“使用ISO镜像文件”→选中U盘装机助理ISO文件→确定。(2)开启虚拟机→选择win7PE进去→打开手动GHO来备份,如下图操作:
文件导入。打开DiskGenius→硬盘→打开虚拟机硬盘→选择我们创建的虚拟机文件位置→选中windows 7—0打开→接下来跟随下图接着操作
系统设置。系统几处主要设置:(1)鼠标右击桌面→个性化→更改桌面图标→在“计算机”,“用户的文件”,“网络”前面的小方格打钩→应用→确定。(2)计算机右键→属性→系统保护→关闭C盘系统保护。(3)计算机右键→属性→操作中心→更改用户帐户控制设置→手动滚动条到最下面选为从不通知,确定。(4)计算机右键→属性→操作中心→更改操作中心设置→把问题报告设置→选择所有用户从不检查解决方案。(5)指定程序C:/programfiles/Internet explorer/iexplore右键复制到桌面(假如您打算升级到IE9,或IE10,那么您要在IE升级之后再操作这一步)(4)调出宽带连接:单击右下角网络图标→打开网络和共享中心→设置新的连接或网络→连接到internet→在“显示此计算机未设置使用的连接选项”前面打钩→点“宽带”→点“连接”,无须设置→等出现“跳过”选项,就点“跳过”→关闭,单击打开“更改适配器设置”→右击“宽带连接”→取消默认连接,创建快捷方式到桌面,并重命名为宽带连接即可。(6)打开控制面板→优化视频显示→拉到底部,关闭所有不必要的动画。(7)设置IE:打开IE→工具→internet选项,常规选项设置如下图,连接选项设置宽带连接从不拨号连接。
Ⅷ 如何利用halcon进行手眼标定
初始参数是0.0195,注意halcon里单位是m k是畸变系数,可以初始为0 sx和sy是相邻像元的水平和垂直距离,1/4"可以查得分别宽和高尺寸是3.2和2.4mm,用320×240去除,得到sx和sy分别是0.01mm,那么应该初始为sx=1.0e-005和sy=1.0e-005,Cx和Cy分别是
Ⅸ 怎样使用HALCON/.NET类
在HALCON/.NET,我们可以用过一个类的实例
(instances of class)来调用HALCON算子。在HalconDotNet引用里,也就是动态链接库里包许多实例化一个类方法,这些
方法可能是重载的,静态的HALCON算子我们可以直接通过类名来调用(这些方法包括HALCON里所有的算子),而非静态的方法必须要通过实例化一个类
后才可以使用,通常HALCON/.NET封装了一个类的实例化方法以及类方法。
例如在C++中,可以使用以下两种方法:
1. C++(算子模式)
通过代码导出,以C++为例,默认导出为算子型的语法结构,而非面向对象的;在此模式下,全部函数声明为全局类型,数据类型只需要用Hobject、HTuple两类类型进行声明;
2. C++(面向对象)
可以以面向对象的方式重写代码,也即利用类及类的成员函数;在这种模式下,控制变量的类型仍未HTuple,而图形数据可以由多种类型,如HImage等;
HALCON手册建议使用者使用第二种方法。
例如我们使用第二种方法实现抓取图像序列(imagesequence)里第一张图像,并且将他显示在HWindowControl窗口中。代码是:
[cpp] view plain
private HWindow Window;
private HFramegrabber Framegrabber;
private HImage Img;
Window= WindowControl.HalconWindow;
Framegrabber= new HFramegrabber("File", 1, 1, 0, 0, 0, 0, "default",
-1,"default", -1, "default",
"board/board.seq","default", 1, -1);
Img= Framegrabber.GrabImage();
Img.DispObj(Window);
GrabImage算子是通过HFramegrabber的实例来调用的。如果你是一个有经验的HALCON使用者,也许你已经看出来HFramegrabber的构造函数调用了OpenFramegraber算子。
但是对于新手来说,可能刚刚接触Halcon,对于Halcon算子还处于熟悉阶段,从Hdevelop中直接到出来的代码也是直接使用静态类。那么建议先使用第一种方法,你只需要明白通过HOperatorSet这个类你可以调用任何一个HALCON算子。
下面我们来看一下到底怎么样调用一个算子。以GrabImage算子为例:
[cpp] view plain
static void HOperatorSet.GrabImage (out HObject image, HTuple acqHandle)//静态方法直接调用算子,包含的参数和halcon算子参数完全相同
void HImage.GrabImage (HFramegrabber acqHandle)//类中封装的类方法,要先实例化类后才可以使用
HImage HFramegrabber.GrabImage ()//重载的方法
image(output_object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . image ; HImage
acqHandle(input_control) . . . . . . . . . . . . . . . . . . . . . . . . . .framegrabber ; HFramegrabber / HTuple
[cpp] view plain
我们可以看出,算子可以通过三个类进行调
用:HOperatorSet, HImage,和HFramegrabber。其中第一种通过HOperatorSet调用主要是用在导出的
HDevelop中(如果你导出程序的话就会看到),也是建议新手使用的方法。而熟悉了之后一般我们在写程序时建议使用另外两种方式,就像下面这样进行调
用:
[cpp] view plain
HImage Image1;
HImage Image4 = newHImage();
HFramegrabberFramegrabber =
newHFramegrabber("File", 1, 1, 0, 0, 0, 0, "default", -1,
"default",-1, "default", "board/board.seq", "default", -1,-1);
Image1 =Framegrabber.GrabImage();
HImage Image3 = null;
需要注意的是通过
HFramegrabber调用返回方法的值,而通过HImage调用没有返回值而是调用的类实例被修改,也就是HImage对象被修改。通常,调用类实
例不会被一个算子所修改,除了被上面所看到的“类构造器”(constructor-like)算子调用。
一些算子像CountSeconds可以当做类方法来使用,例如,你可以直接通过类名调用它们而不用生成一个实例:
[cpp] view plain
double S1, S2;
S1 =HSystem.CountSeconds();
这是因为这些算子声明前面都有static关键字:
[cpp] view plain
static void HOperatorSet.CountSeconds (outHTupleseconds)
static double HSystem.CountSeconds()<span style="font-family:'Times New Roman'; font-size:14px; line-height:21px"> </span>
下面我们看一下类的生命周期:从声明(Declaration)到终结(Finalization)
下面的声明仅仅声明了一个类HImage的变量,而没有指向任何的对象:
[cpp] view plain
HImage Image1;
在这个语句中,你不能只使用变量直接去调用算子;有些语言里面甚至不能够将它用做一个输出参数(例如VB 2005)。只有先给它一个图像对象,例如:
[cpp] view plain
Image1 =Framegrabber.GrabImage();
你也可以在声明的时候初始化一个变量:
[cpp] view plain
HImage Image2 =Framegrabber.GrabImage();
[cpp] view plain
<span style="font-family:Arial,Helvetica,sans-serif"></span><pre name="code" class="cpp">HImage Image3 = null;</pre>
你可以通过一个IsInitialized方法来检验一个类实例是否被初始化。
但是使用构造函数(Constructors)后的对象就可以了:
下面的式子是利用类HImage空的构造函数来初始化一个类变量
[cpp] view plain
HImage Image4 = new HImage(); <span style="font-family:'Times New Roman'; font-size:14px"> </span>
类实例可以用来调用“类似构造函数”算子像GrabImage,用抓住的一张图片初始化类变量:
[cpp] view plain
Image4.GrabImage(Framegrabber);
除了空的构造器,大部分HALCON/.NET类提供一个或者更多的构造器来初始化基于HALCON算子的对象。例如,HImage提供了一个构造器:
[cpp] view plain
HImage Image5 = newHImage("fuse");<span style="font-family:'Times New Roman'; font-size:14px; line-height:21px"> </span>
reference manual和右键go to definition是很好的参考资料。
关于Finalizers
在.NET中程序员不需要考虑内存管理方面的事情,因为它有自动垃圾回收回收哪些不再使用的对象。HALCON/.NET完全遵循这种规则通过提供所有类的回收器,所以不需要管理资源,例如,一个图像采集设备的连接会被自动正确的删除。
对于大部分类,回收器自动调用合适的算子像CloseFramegrabber来释放资源。调用的算子在一个参考手册页中列了出来(例如HFramegrabber)。这个算子不可以通过类来调用,在相应的参考手册条目中可以看到:
[cpp] view plain
static void HOperatorSet.CloseFramegrabber (HTupleacqHandle)
也就是说你没有必要调用这样一个算子,如果你想用别的参数从新进行连接,它会自动执行。
注意当用HFramegrabber一般的类时不能使用HOperatorSet来关闭或者清除算子。
但是对于像图像这种数据变量,它们包含的只是引用,对于他们指向的内存垃圾回收机制也许不会直接清除,这些就需要手动清除:
有一种方法是在处理完事件后直接调用GC清除:
[cpp] view plain
private void Timer_Tick(object sender, System.EventArgs e)
{
Action();
GC.Collect();
GC.WaitForPendingFinalizers();
}
另一种方法是直接调用自带的销毁方法:
[cpp] view plain
HImage Image = new HImage("fuse");
...
Image.Dispose();
Ⅹ 怎么向halcon中发送串口数据
关于串口设备,最好联系厂家询问是否提供API接口。
关于API接口一般是一个可供调用的DLL文件。
如果有可以直接在C#中引用,作为类库来操作设备。
具体调用方式需要询问厂家或参阅api的文档说明。
不提供软件接口的设备是无法进行开发的。
我大概搜了下这个设备,设备是提供配套软件的,那么这款设备是有相关通讯接口类库的,也就是可以用C#进行开发。
如果找不到API文档,
请尝试用串口调试工具,跟踪配套软件的每一步操作,获取串口通讯报文,用C#模拟操作报文自己封装通讯类后进行开发。