您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > halcon连接图像采集设备与halcon多线程采图
Halcon连接采图设备与Halcon多线程采图大恒图像娄训志概要ØHalcon介绍ØHalcon采图知识与常用算子ØHalcon连接采图设备ØHalcon连接采图设备编程应用ØHalcon连接多个采图设备ØHalcon与多线程采图1.Halcon介绍Ø相关背景MVTec公司是世界上最著名的机器视觉软件公司,也是世界上标准机器视觉软件的领导者。MVTec公司具有强大的开发和技术支持能力,50%的成员具有博士学位和机器视觉领域的长期工作经验。Ø什么是HalconHalcon是在世界范围内广泛使用的机器视觉软件。用户可以利用其开放式结构快速开发图像处理和机器视觉应用软件。1.Halcon介绍ØHalcon包含些什么Halcon包含Blob分析,形态学,模式识别与匹配,测量,2、3D相机标定,双目视觉,立体匹配等性能杰出的图像算法,以及图像采集,I/O通信等工具。Ø为什么使用HalconHalcon支持Linux/UNIX,Windows32/64位等操作系统,所有的库均可以使用C,C++,C#,VB和delphi编程语言访问,使用比较方便。Halcon能够从软件上帮助你,解决绝大多数机器视觉软件问题。1.Halcon介绍——工程应用1.Halcon介绍——图像采集接口Ø图像采集Halcon尽可能地保证与硬件无关,支持大多数图像采集卡,及带有DirectShow和IEEE1394驱动等的采集设备。1.Halcon介绍——图像采集设备1.Halcon介绍Halcon采集图像的特点•图像采集链接库,独立于其它图像处理链接库•一致的代码模板(磁盘文件和图像采集设备)•支持多个采集设备•同步和异步采集•支持外触发•图像尺寸、图像位数、颜色空间可调•支持颜色查找表•支持与设备相关的参数调整2.Halcon采图知识与常用算子ØImagesinHalcona.Multiplechannels自动处理多通道图像或单通道图像b.Variouspixeltypes自动处理多型号位深的图像c.Arbitrarily-shapedregionofinterest任意形状的感兴趣区域2.Halcon采图知识与常用算子ØimagetuplesinHalcon例如:如果想对一批图像进行滤波处理,你只需要调用一次mean_image算子对图像数组进行操作,避免多次调用mean_image。image数组可以通过以下算子创建gen_empty_obj(Objects)concat_obj(Object0,Objects1,Objects)concat_obj(Objects,Objects2,Objects)mean_image(objects,ImagesMean,7,7)//ImagesMean即为滤波后的图像数组Halcon中的image,还可以是图像数组,halcon可以自动处理图像数组。但需要对图像数组进行初始化。图像制式NTSC:640×480像素,30帧每秒;PAL:768×576像素,25帧每秒。2.Halcon采图知识与常用算子FieldFrameØ如何获取采集设备信息?Ø如何打开采集设备?Ø如何获取采集设备参数信息?Ø如何设置采集设备参数?Ø如何采集图像到内存?2.Halcon采图知识与常用算子2.Halcon采图知识与常用算子Øinfo_framegrabber获取采集接口信息eg.info_framegrabber(AcqName,'port',Information,Values)Øopen_framegrabber打开采集设备eg.open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0,'default','default','default',P,L,AcqHandle)Øget_framegrabber_param获取采集设备参数eg.get_framegrabber_param(acq,'bits_per_channel',Value)Øset_framegrabber_param设置采集设备参数eg.set_framegrabber_param(acq,'port',0)2.Halcon采图知识与常用算子2.Halcon采图知识与常用算子Øgrab_image同步采集eg.grab_image(Image,Acq)Øgrab_image_async异步采集eg.grab_image_async(Image,Acq,-1)2.Halcon采图知识与常用算子ØHalcon开发典型架构3.Halcon连接采图设备3.Halcon连接采图设备3.Halcon连接采图设备Ø如何获取采集句柄3.Halcon连接采图设备ØHdevelop环境下连接设备(代码连接)open_framegrabber('DirectShow',1,1,0,0,0,0,'default',8,'rgb',-1,'false','default','IntegratedCamera',0,-1,AcqHandle)grab_image_start(AcqHandle,-1)while(true)grab_image_async(Image,AcqHandle,-1)endwhileclose_framegrabber(AcqHandle)3.Halcon连接采图设备ØHdevelop环境下连接设备(采集助手)建议资源选择采集助手连接相机后,就可以设置参数了自动代码生成3.Halcon连接采图设备ØHdevelop环境下连接设备(采集助手生成代码)open_framegrabber('DirectShow',1,1,0,0,0,0,'default',8,'rgb',-1,'false','default','IntegratedCamera',0,-1,AcqHandle)set_framegrabber_param(AcqHandle,'brightness',34)set_framegrabber_param(AcqHandle,'contrast',18)set_framegrabber_param(AcqHandle,'hue',-4)set_framegrabber_param(AcqHandle,'saturation',12)set_framegrabber_param(AcqHandle,'exposure',-3)grab_image_start(AcqHandle,-1)while(true)grab_image_async(Image,AcqHandle,-1)endwhileclose_framegrabber(AcqHandle)3.Halcon连接采图设备ØGige图像设备Ø线阵相机图像设备3.Halcon连接采图设备eg.(c++code)MyGrabImage((constunsignedchar**)&image_matrix_ptr);//获取图像数据块指针gen_image1_extern(&image,“byte”,width,height,(long)image_matrix_ptr,(long)0);//构建Halcon下的Hobject类型imagev未提供接口的图像设备,Halcon如何连接?v通过图像设备自带的sdk,得到的图像数据直接关联到Halcon的Image类型。算子:gen_image1,gen_image3,gen_image1_extern,gen_image3_extern3.Halcon连接采图设备Ø对于大多数的图像设备接口,简单的图像采集,只需要两个步骤Øa.open_framegrabberØb.grab_image(orgrab_image_async)Ø其他算子Øclose_framegrabber,close_all_framegrabbersØset_framegrabber_lut,get_framegrabber_lutØgrab_data,grab_data_asyncØset_framegrabber_param,get_framegrabber_param3.Halcon连接采图设备HDevelopVisualStudio应用程序编译代码专家Halconlibrary原型化视觉开发高级用户接口工具4.Halcon连接采图设备编程应用4.Halcon连接采图设备编程应用1.新建一个空的MFC工程;2.把我们从HDevelop中导出的.cpp文件加入到工程;3.打开工程设置菜单==Tools菜单==Option==选择Directories,在Showdirectoriesfor编辑框中选择Includefiles选项,添加$(HalconROOT)/include,$(HalconROOT)/include/cpp;4.选择Libraryfiles选项,添加$(HalconROOT)/lib/X86SSE2-WIN32;5.工程设置菜单==Link菜单==Getegory==选择Input,在Object/librarymodules中加入Halconcpp.lib.Vc++6.0下如何设置编程环境4.Halcon连接采图设备编程应用ØHdevelop环境下Demo演示ØC++环境下,用Halcon连接采图设备5.Halcon连接多个采图设备Øopen_framegrabber算子接口类型分辨率图片框场或帧位深相机类型外触发颜色空间相机设备号相机端口5.Halcon连接多个采图设备5.Halcon连接多个采图设备5.Halcon连接多个采图设备5.Halcon连接多个采图设备如果采图设备不支持多端口多句柄,怎么办?5.Halcon连接多个采图设备Ø动态端口切换与异步采集set_framegrabber_param(AcqHandle,‘start_async_after_grab_async’,‘disable’)*重要,可以防止切换端口时,相机grabbusy的问题while(1)set_framegrabber_param(AcqHandle,'port',Port1)grab_image_start(AcqHandle,-1)grab_image_async(Image1,AcqHandle,-1)disp_image(Image1,WindowHandle1)set_framegrabber_param(AcqHandle,'port',Port0)grab_image_start(AcqHandle,-1)grab_image_async(Image0,AcqHandle,-1)disp_image(Image0,WindowHandle0)endwhile5.Halcon连接多个采图设备Ø多相机同时采图Halcon支持多相机同时采图,只需要同时调用grab_imageorgrab_image_async。但是实际上,同时采图也要根据采集板卡是否支持同步采集,采集卡需配备多个采图处理芯片,如a/d转换器等。即使Halcon没有提供详细多相机同步的方法,也可以手动设置实现。例如:可以通过用过一个外触发信号同时触发多个相机同时采集。6.Halcon与多线程采图Ø并行图像采集Halcon支持的采集设备都能在多核或多处理器设备上运行;Halcon的大多数算子支持并行重用;但是连接图像采集设备相关算子使用时,必须是排他性调用。例如:open_framegrabber,info_framegrabber,close_framegrabber,andclose_all_framegrabbers)。Mostoftheoperatorsarereentrant,onlytheoperatorsconcernedwiththeconnectiontothedevice(open_framegrabber,info_framegrabber,close_framegrabber,andc
本文标题:halcon连接图像采集设备与halcon多线程采图
链接地址:https://www.777doc.com/doc-1306991 .html