|
楼主 |
发表于 2007-7-15
|
20. Halcon伪彩色
可以参照冈萨雷斯伪彩色 章节 。
21. Halcon角度分布
22. 判断Region 是否为空 ?
首先一般region是多个region存在一个regions 变量里面 。所以 先使用count_obj 获得有多少个 obj;然后使用 select_obj ,选出一个区域处理;接着使用 area_center ,VC可以使用 region.Id()!=H_EMPTY_REGION 判断是否为空 。
23. 新手入门书籍?
首推 《机器视觉算法与应用》,这本书前面更多的是阐述一些通用的机器视觉经验 ,后面有跟示例,代码为halcon8.0,实际使用可能会有部分函数已经被抛弃使用;
其次,冈萨雷斯绿皮书 《数字图像处理》,介绍内容丰富,全面,但是可能讲得比较深,没有实际实践或再找资料展开会比较,常读不深入。是数字图像处理基础理论不可多得的书籍。
24. 用halcon调用halcon支持的品牌相机,使用相机自带的厂家软件 可以发现相机,可是halcon总是提示:图像获取设备未初始化。这是为什么?
把对应品牌的相机配置文件加到采集助手的
使当前halcon调用的相机参数与厂家软件一致;再确保 相机驱动,采集卡驱动安装完毕。
25. 屏幕/窗口截图 。
使用dump_window_image 保存对应窗口截图,截图为当前肉眼所见图像,包括已经绘制到图像上的region,xld等。
26.导出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++代码 ,所以是 此处添加该项。
27. 标定助手的 “平均误差”是指什么 ?
这个平均误差的计算是按如下方式:
1. 计算标定板图像的 标志点位置,此处记为Mark1 ;
2. 标定结束后,将标准标志点 ,按照得出的转换矩阵,进行转换得到Mark2;
3. 由于可以得到Mark1 和 Mark2 点之间对应关系,点对应相减 ,绝对值累加(此处累加方式请具体查标定程序查找具体平均误差计算函数,很久,已记忆不详) ,然后除以 标志点数目 。
4. 此时得到的就是平均误差 。
28. Halcon参数函数里面的四个冒号 (::::)是什么意思?
四个冒号按照参数类型和输入输出不同进行了分隔 。 从左到右依次是 (输入的obj对象 : 输出的obkj对象 : 输入的控制变量 : 输出的控制变量 ) 。
29. 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)
参数名(参数类型) 具体类型->(支持内部参数类型)
30.多线程调用代码,代码中包含halcon窗口代码 ,报错。
Halcon涉及到窗口的代码都不能跨线程调用,硬是跨线程调用可能出现参数输入错误等异常情况。参见函数 F1 说明 的 Parallelization 并行性 说明 。最好的办法是 当前窗口当前线程声明,定义并使用,其它线程可以对MFC的picturebox 控件进行关联(不同线程调用该代码稳定性待测试),然后不同线程自己定义变量进行具体操作。
31.region或者xld绘制或画到图像上用哪个函数?
Halcon绘制有paint和overpaint,区别是overpaint是绘制自身,paint输出可以是其他图像。
绘制region:paint_region 绘制xld: paint_xld 。
33. 线触发,软触发,外触发
软触发:顾名思义就是到达设定的采集条件时,通过软件设置触发采集;
线触发:也称外触发,是利用相机自带触发线,在到达设定的采集条件时,触发相机采集,线的信号通常是由其他设备如:红外传感器,探测到目标物体出现在预定位置,就进行采集
34.编写程序过程中,程序崩溃,环境保存路径 。(待验证)
对于windows系统,路径是 C:\Documents and Settings\login\Local Settings\Temp\hdevelop. 其中login为登录的系统用户名 。
注意1: 在win xp 下测试 ,在调试程序过程中未发现临时文本 。所以待验证 。
注意2:win7要求版本为11.0.1之后 ,之前版本存在bug 。
35.字符串和HTuple互转/const char* 和HTuple互转。
HTuple 内部的字符串类型是 HString 。HString 可以接受 const char* 变量,自己转换。HString到 const char* 可以通过HString 的 Text()进行转化 。
HTuple 到 const char* : HTuple 变量.S().Text()
const char* 到 HTuple : 直接赋值即可;
其它 CString ,string 到 HTuple 之间通过 const char* 和 HTuple 进行互转 。
36.遍历文件夹,读取指定格式文件/图像。
* 遍历文件夹D:/资料库/Downloads
list_files ('D:/资料库/Downloads', ['files','follow_links'], ImageFiles)
* 筛选bmp或jpg格式的文件
tuple_regexp_select (ImageFiles, ['\\.(bmp|jpg)$','ignore_case'], ImageFiles)
37.HALCON 能自定义region的颜色么?
set_rgb ,set_hsi 设置输出颜色格式。总共有set_color, set_pixel, set_rgb, set_hsi or set_gray 可以设置输出颜色格式。要求输入参数是字符串时按'#rrggbb' 格式。
以上是一次性设置,当前设置直到再次设置或关闭程序为止。如果是要设置系统颜色,需要用query_color ,获取当前使用的颜色查找表,然后修改相应颜色查找表,用set_system(::'graphic_colors',...:). 设置成永久使用的颜色查找表。注意:用 set_system 设置颜色查找表 将从排除 黑,白,灰色的颜色从左到右直到seg_colord设置的输出颜色数目为止。
38.凸度convexity 概念理解。
凸度 = 区域面积/包围他的最小凸包面积
注意在halcon说明文档中没有特别注明是最小凸包,但按常理来说应该是最小凸包。有兴趣的的可以试验一下。以下是图示计算过程。
凸度= 红色/黑框包围面积
39.halcon类层次关系。
示例
1.halcon里面有没有检测条码质量分析的算子?
条码质量评测算子为 get_bar_code_result 。参见示例 print_quality_isoiec15416.hdev 。
回答者记录:广州-Rex-C++ 提供24号问题(图像设备未初始化)答案
苏州-问远-C++ 提供 38号问题凸度概念图 ,深圳-地瓜-MFC附注解释该问题。
示例区回答者记录
1号问题,halcon有没有条码质量分析的算子?深圳-小文-C# 提出问题 ,北京-维-VC/B回答该问题 。
|
|