预约试听:15323438773
  


学员中心 Service
Service 常见问题

关于0基础新手入门HALCON的问题简答

1. 无论读入什么图像,读入图像显示效果明显和原始图像不一致,哪怕是从相机读入的图像,也是明显颜色差异。什么原因引起?
  答:初步诊断是,显示的时候调用的颜色查找表存在异常不是 default ,而是其它选项。此时可以通过查阅相关参数,调用set_system解决,也可以 在 编辑-》参数选择-》颜色查找表进行更改 。

2. 裁剪图像;从图像上截取某段图像进行保存。如何实现该操作
  答:首先应该知道,region不具有单独构成图像的要素,他没有灰度值。有用过opencv的应该知道 ROI(感兴趣区域),设置好它后,对图像的大部分操作就转为 图像的一个矩形区域内进行。类似的,halcon有domain 概念。 首先 设置好一个矩形区,然后使用 reduce_domain(是一个矩形区域)后,再使用crop_domain 就裁剪出图像。

3. 读入bmp,或tiff 图像 显示 该图不是bmp文件或不能读。原因是什么?
  答:这个常有新手询问,画图,图像管理器都能打开,又或者是相机采集完直接存到硬盘。Halcon 读取图像 在windows下面到最后是调用windows库函数 实现读图功能。咱不清楚到底是怎么调用的。对于图像格式,在读图函数F1说明很细。基本 bmp 如果 文件头不是bw还是bm(百度百科bmp格式查找,编写此处时无网络,后续可能忘记),就读不进来 。其他规格欢迎补充。解决办法,如果是相机采集,就在内存直接转换(参见 halcon到VC.pdf 里面的 halcon和bitmap互转);如果是采完的图片,大部分通过画图工具转换为 24位bmp格式,即可解决。、

4. 读入avi文件报错。
  答:Halcon 通过 directshow或另一个格式解析视频,正常来说应该可以读入市面大部分视频,实际测试发现只能读入最标准的avi文件格式。如果需要临时处理,需要下格式工厂等工具转化为最标准的avi文件格式(论坛叶诺有发帖说明)。

5. Region 或 xld 筛选 。
  答:Halcon提供了丰富的region 和xld筛选方法。Region可以使用select_shape_xld,选择出符合要求的区域,如果 不能满足还可以通过 类似 region feature 这样关键字组合成的算子获取区域特征,然后通过 tuple 排序或相加减,再通过 tuple_find 确定是对应哪个区域的特征。同样的halcon也提供了 select_contours_xld 进行轮廓筛选 。

6. Halcon分几类对象,每个类的功用是?
  答:Halcon总分俩大类,tuple和图标对象obj 。Tuple涵盖了对 所有基础数据类型的封装,可以理解为她是halcon定义的数组类。Obj 是alcon定义图标类基类。衍生出了许多类型,其中 Region ,Xld,Image 其中最主要的类型。

7. F1说明,参数部分 -array 是什么意思?
  答:该符号说明,该参数接受一组输入,对tuple就是一组tuple,对obj 就是通过concat_obj或其它操作产生的一组obj元组。

8. 俩个相对方形物体的距离计算。
  答:如果这俩个物体和背景对比清晰,最近的距离在俩条边下则可以再预处理之后进行如下操作:
1.Segement_contours_xld 分割边缘线段(edgeXXXX等得到的边缘);
2.select_contours_xld 选择出特定的长度或方向边缘;
3.假设此时刚好获取俩条线 ,则可以利用 distance_ll ,求得 距离,也可以自己fit_lineXXXX 拟合直线再求距离;
  以上是一种方法,另一种常见方法是利用 measure_pos  或measure_pair 进行测量,不熟悉的可以翻看示例或者使用 测量助手进行测量 。

9. 创建过程或函数,或者全文编辑。
  答:在算子编辑窗口,main所在行右边,有四个按钮,将鼠标移到该位置,将有中文提示,按提示点击按钮。

10. 从其它halcon环境窗口复制函数或算子 复制 到新建的halcon窗口,无法使用,提示不识别。
  答:除了敲错,此种情况都是由于该函数式本地或全局函数,而不是halcon算子。确定的方法:注意该算子颜色然后去 编辑 参数选择 查看该颜色代表的算子属于什么类型函数。亦可以直接右键,如果有查看函数。为黑色可点击,这种情况也是本地或全局函数。
   解决方法:如果是全局函数,可以在halcon目录下面找到该函数,加载到新窗口就行;也可以新建输入输出一致的过程,将代码复制过来,然后使用。本地函数只能使用后一种方法解决。

11. 64位系统,VS2010及以下版本 报 error LNK1112:模块计算机类型”X86” 与目标计算机类型”X64” 冲突 。
  答:问题原因是默认情况,halcon在64位系统会自动安装64位halcondll,并且添加到环境变量;而vs一般是默认X86编译环境,俩者dll库不一致,换句话说是底层机器指令不一致。解决办法是 将编译环境设置为64位,详见百度 ;或者再次安装halcon选择32位dll,并修改环境变量 VC++路径为32位库路径,bin 指向32位dll 路径。

12. 64位系统,VS2012 。无论怎么更改库文件,头文件,名空间,最好的提示也是找不到函数定义。
   答:反复出现,无法解决时,有可能是 问题11所述问题,解决办法见11.至于为何不提示error LNK1112,可能是VS更改了前面检测等级,在编译阶段就拦截到错误。应该说是更先进了,只是比较不合情理。

13. 如何查找halcon算子?
 答:Halcon算子命名大部分所见即所得,也就是如果你记得你要找的算子汉字名称,输入到翻译器得到英文单词,在F1 的算子分栏 从头开始输大部分能找到一些算子,这时候再点击进去注意算子功能解释,懂了是自己要的就拿起来到例程搜索示例,查阅功能;不懂就看说明部分;再不懂进群问。
  另外 ,对于近半算子是 按 动作_类型/目标_属性 命名。 Obj 是 region,xld,image的父类,后三者找不到的算子可以输入 obj查找 。

14. Halcon 相等,不等于,异或,或等操作符。
   答:直接在F1 出来的分栏 输入 operation ,查找可得。

15. halcon环境 使用 get_grayval 进行像素操作太慢 ,如何加速?
   答:注意到halcon环境是解释执行,get_grayval 可以一次获取多个,可以预先把行数据存入一个tuple对象,存一次以后可用多次。因此提速方法,建议事先创建好行tuple (用tuple_add 加一,即可实现所有行加一),列的tuple 数组 (创建好可以用多次) 。这时每次再调用get_grayval ,速度将显著提升,因为节省了逐行解释时间 。注意:如果导出到VC,则建议用get_image_pointer 获取指针进行操作 。

16. 从一组region或xld,image中获取单个对象,或多个halcon同类对象构成
-array 元组。
  答:select_obj负责从 多个对象的元组选出指定序号对象;concat_obj执行将俩个对象(或元组)链接成一个对象元组。

17. 更改halcon颜色查找表,显示不同颜色空间 。
  答:在编辑 参数选择 颜色查找表进行更改;也可以在F1输入lut进行查找设置函数。

18. 创建空对象 ,空Region ,空数组。
  答:gen_empty_obj 创建空的对象;gen_emtpy_region 创建空数组;halcon环境中tuple 用 :=[] 。

19. Region和xld 互相转化 ;多边形创建xld;直方图,直线,点集,多边形,行程编码创建region 。
  答:Halcon里对象之间的相互转换,一般可以转化为gen_目标对象_源对象 形式 。如:gen_region_contour_xld  使用xld创建一个region ;gen_contour_region_xld 从区域region创建一个轮廓xld 。直方图histo;直线是line,点集是points,行程编码runs,黑森线hline,多边形polygon 。按照上面格式进行查找 。

20. Halcon伪彩色
  答:可以参照冈萨雷斯伪彩色 章节 。

21. Halcon角度分布

 


     

        90~180                       0~90

 

 

 

        180~270                      270~360

 

 

22. 判断Region 是否为空 ?
   答:首先一般region是多个region存在一个regions 变量里面 。所以 先使用count_obj 获得有多少个 obj;然后使用 select_obj ,选出一个区域处理;接着使用 area_center ,VC可以使用 region.Id()!=H_EMPTY_REGION 判断是否为空 。

23. halcon调用halcon支持的品牌相机,使用相机自带的厂家软件 可以发现相机,可是halcon总是提示:图像获取设备未初始化。这是为什么?
   答:把对应品牌的相机配置文件加到采集助手的,
使当前halcon调用的相机参数与厂家软件一致;再确保 相机驱动,采集卡驱动安装完毕。

24. 屏幕/窗口截图 。
   答:使用dump_window_image 保存对应窗口截图,截图为当前肉眼所见图像,包括已经绘制到图像上的region,xld等。

25. 导出halcon 11 代码为C++ 代码,经常提示不识别 ,或者 名空间名字没找到 。解决办法 是什么?
   答:首先 halcon11 导出如果没有勾选10 ,默认产生的C++代码,对应的主要头文件是 HalconCPP.h 和 using namespace HalconCPP 。
配置如下 头文件 #include “HalconCPP.h” ,代码在导出时已经自动生成 。
using namespace HalconCPP;   代码导出时已经自动生成 。
VC++目录 ,配置include路径 ,一个是 默认Halcon安装文件夹下面的include ,另外一个根据你导出的代码而定,上面是 halconCPP ,所以对应添加 include文件夹下面的 HalconCPP文件夹到路径里面 。
此外配置  将安装文件夹下的lib添加到 库文件 目录 。
最后将 HalconCPP.lib添加到 库的 依赖项。注意此处要一句导出代码而定,上述导出的是halcon -C++代码 ,所以是 此处添加该项。

26. 标定助手的 “平均误差”是指什么 ?
 答:这个平均误差的计算是按如下方式:
1.计算标定板图像的 标志点位置,此处记为Mark1 ;
2.标定结束后,将标准标志点 ,按照得出的转换矩阵,进行转换得到Mark2;
3.由于可以得到Mark1 和 Mark2 点之间对应关系,点对应相减 ,绝对值累加(此处累加方式请具体查标定程序查找具体平均误差计算函数,很久,已记忆不详) ,然后除以 标志点数目 。
4.此时得到的就是平均误差 。

27. Halcon参数函数里面的四个冒号 (::::)是什么意思?
 答:四个冒号按照参数类型和输入输出不同进行了分隔 。 从左到右依次是  (输入的obj对象 : 输出的obkj对象 : 输入的控制变量 : 输出的控制变量 ) 。

28. Halcon F1 算子 Parameters 格式说明 。
 答:例1:Image1 (input_object)  (multichannel-)image(-array) → object (byte* / int1* / int2* / uint2* / int4* / int8 / real*) *allowed for compute devices
Input image 1.
         Image1 对应参数名    input_object  指示对象参数类型 是输入对象
         (multichannel-) 指示是可以是多通道图像   image  指示 参数是一个 image类型
         (-array)  指示可以一次输入多个    object(……) 指示输入的是object,其中支持的object参数的内部类型如(……)所示 。
2: Mult (input_control)  number → (real / integer)
       参数名(参数类型)    具体类型->(支持内部参数类型)

29. 多线程调用代码,代码中包含halcon窗口代码 ,报错。
  答:Halcon涉及到窗口的代码都不能跨线程调用,硬是跨线程调用可能出现参数输入错误等异常情况。参见函数 F1 说明 的 Parallelization 并行性 说明 。最好的办法是 当前窗口当前线程声明,定义并使用,其它线程可以对MFC的picturebox 控件进行关联(不同线程调用该代码稳定性待测试),然后不同线程自己定义变量进行具体操作。

30. region或者xld绘制或画到图像上用哪个函数?
  答:Halcon绘制有paint和overpaint,区别是overpaint是绘制自身,paint输出可以是其他图像。
   绘制region:paint_region 绘制xld: paint_xld 。

31. 线触发,软触发,外触发
  答:软触发:顾名思义就是到达设定的采集条件时,通过软件设置触发采集;
     线触发:也称外触发,是利用相机自带触发线,在到达设定的采集条件时,触发相机采集,线的信号通常是由其他设备如:红外传感器,探测到目标物体出现在预定位置,就进行采集

32. 编写程序过程中,程序崩溃,环境保存路径 。(待验证)
  答: 对于windows系统,路径是 C:\Documents and Settings\login\Local Settings\Temp\hdevelop.  其中login为登录的系统用户名 。
   注意1: 在win xp 下测试 ,在调试程序过程中未发现临时文本 。所以待验证 。
   注意2:win7要求版本为11.0.1之后 ,之前版本存在bug 。


 
联系方式

深圳市龙华新区观澜第三工业区观中街5号联为科技园

1505031685@qq.com

15323438773 汤老师  

0755-29495142

预约免费试听
  • 您的姓名:
  • *
  • 公司名称:
  • 地址:
  • 电话:
  • *
  • 传真:
  • E-mail:
  • 邮政编码:
  • 留言主题:
  • 详细说明:
  • *
     
联为智能教育专业打造自动化教育产、学、研一体化平台,成为智能制造教育领导者。联为plc培训班精心打造专业培训实操基地,专门为学员研发一批教学设备,包括机器人学习教学连线,plc培训学习教学连线,工业机器人培训、plc编程培训等专业的教学设备,让学员真正理论实践一体,学以致用,从实践交流中体会知识的精髓,来一场完美的职业转身。
扫码学习
深圳联为智能教育感谢您的关注!
在线直播间
小胡老师
Copyright ©2005 - 2013 深圳市联为智能教育有限公司


犀牛云提供企业云服务
5
电话
  • 15323438773
1
QQ
6
二维码
回到顶部
四川福彩网 河南福彩网 上海福彩网 山东福彩网 陕西福彩网 秒速赛车平台来【大发df3833.com】 秒速赛车平台来【大发df3811.com】 秒速赛车平台来【大发df3822.com】 秒速飞艇平台来【大发df3833.com】 澳门百家乐平台来【大发df3811.com】 幸运快乐8平台来【大发df3822.com】 重庆时时彩平台来【大发df3833.com】 幸运快乐8平台来【大发df3811.com】 幸运28平台来【大发df3822.com】 太阳城娱乐平台来【大发df3833.com】 加拿大28平台来【大发df3811.com】 幸运飞艇平台来【大发df3822.com】 香港六合彩平台来【大发df3833.com】 香港六合彩平台来【大发df3811.com】 pk10平台来【大发df3822.com】 pk10平台来【大发df3833.com】 快乐飞艇平台来【大发df3811.com】 秒速牛牛平台来【大发df3822.com】 欢乐生肖平台来【大发df3833.com】 极速快3平台来【大发df3811.com】 腾讯分分彩平台来【大发df3822.com】 分分彩平台来【大发df3833.com】 澳洲幸运8平台来【大发df3811.com】 光大彩票来【df3822.com】 九号彩票来【df3833.com】 二分彩平台来【大发df3811.com】 刘伯温论坛来【大发df3822.com】 开元棋牌来【df3833.com】 开元棋牌来【df3811.com】 太阳城开户平台来【大发df3822.com】 六合彩开奖平台来【大发df3833.com】 台湾宾果28平台来【大发df3811.com】 亚博体育来【df3822.com】 亚博体育来【df3833.com】 ag亚游平台来【df3811.com】 ag亚游平台来【df3822.com】 ag亚游平台来【df3833.com】 ag电子游戏来【df3811.com】 ag电子游戏来【df3811.com】 新濠平台来【df3822.com】 千赢国际来【df3833.com】 千赢国际来【df3811.com】 ag捕鱼王来【df3822.com】 ag捕鱼王来【df3833.com】 ag捕鱼王来【df3811.com】 捕鱼王来【df3822.com】 泛亚电竞来【df3833.com】 泛亚电竞来【df3811.com】 北京快乐8平台来【大发df3822.com】 泛亚电竞来【df3833.com】 极速六合彩平台来【大发df3811.com】 极速六合彩平台来【大发df3822.com】 幸运快三平台来【大发df3833.com】 新疆时时彩平台来【大发df3811.com】 新疆时时彩平台来【大发df3822.com】