Halcon识别一维码的代码实例Word格式文档下载.docx
《Halcon识别一维码的代码实例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Halcon识别一维码的代码实例Word格式文档下载.docx(9页珍藏版)》请在冰点文库上搜索。
*先关闭活动图形窗口,再打开这个窗口,标识符为WindowHandle;
《
*相对于界面左上角第0行、第0列,大小为300×
300像素,颜色为黑色。
open_framegrabber
('
DirectShow'
1,
default'
8,
rgb'
-1,
false'
Gsou
Camera'
AcqHandle)
打开帧接收器(图像采集设备,如摄像头,工业相机等),参数(Parameter)详见这个算子注意,采集器名称不同要更改,或者用助手获取也可以。
grab_image_start
(AcqHandle,
-1)
while
(true)
grab_image_async
(Image,
AcqHandle,
-1)
*开始条形码识别
create_bar_code_model
([],
[],
BarCodeHandle)
*必备的创建条码解码的开头,下面有一段结束代码
dev_update_var
off'
)
dev_update_pc
dev_update_window
刷新窗体
set_display_font
(WindowHandle,
14,
mono'
true'
dev_set_draw
margin'
dev_set_line_width
(3)
Colors
:
=
['
forest
green'
'
magenta'
blue'
red'
yellow'
]
设置区域框的属性,如无填充色、边框线大小为3,颜色。
*CodeTypes
auto'
]
CodeTypes
EAN-13'
39'
EAN-8'
128'
93'
设置条码的类型,如EAN-13等5种一维码类型,或者auto自动获取(但解码时间较长且有误读的可能)
get_image_size
Width,
Height)
—
dev_display
(Image)
*获取图像大小,并显示图像
count_seconds
(Start)
find_bar_code
SymbolRegions,
BarCodeHandle,
CodeTypes,
DecodedDataStrings)
(Stop)
Duration
(Stop
-
Start)
1000
*开始计时、寻找并解码条形码(参数解释详见这个算子),结束计时,并计算解码的时间
(SymbolRegions)
get_bar_code_object
(BarCodeObjects,
all'
symbol_regions'
get_bar_code_result
(BarCodeHandle,
decoded_types'
DecodedDataTypes)
*area_center
(SymbolRegions,
Area,
Rows,
Columns)
for
J
0
to
|DecodedDataStrings|-1
1
&
dev_set_color
(Colors[J])
select_obj
ObjectSelected,
J+1)
(ObjectSelected)
endfor
*循环获取,并且根据获取的条码数量,设置区域框的颜色
if
(|DecodedDataStrings|
>
1)
*disp_message
Found
bar
code(s)
in
+
Duration$'
ms:
\n
Type:
DecodedDataTypes
Data:
DecodedDataStrings],
window'
5*12,
12,
disp_message
读取条形码,用时{'
ms}:
]'
='
“'
DecodedDataStrings
”'
Colors,
disp_continue_message
wait_seconds(3)
endif
~
*判断读取到数据的数量,当大于1(数字可改为2、3„„)个条码被解码时,显示信息在窗体的第12行,第12列的位置,并按顺序用不同的颜色标注
clear_bar_code_model
(BarCodeHandle)
*关闭条形码解码
endwhile
close_framegrabber
(AcqHandle)
*关闭帧接收器(摄像头)
=================================================================================
04
\
寻找正确的、所需的条码类型的条形码,当寻找到时,hold住图像
*注意摄像头的名称
(
dev_update_window
set_display_font
*Colors
{
area_center
IdxResult
(regexp_test
(DecodedDataTypes[IdxResult],
#
0)
Color
else
Color
dev_set_color
(Color)
select_obj
SelectedRegion,
IdxResult+1)
(SelectedRegion)
DecodedDataTypes[IdxResult]+'
+DecodedDataStrings[IdxResult],
image'
Rows[IdxResult],
Columns[IdxResult]-160,
Color,
*if
2)
(DecodedDataTypes
、
stop()
*endif
clear_bar_code_model
|
05
读取每个不同的条码时,显示不同颜色的区域框,获取的条码信息也为相应的区域边框颜色
^
下载文档到电脑,查找使用更方便
*dev_set_color
(Start)
"
(Colors[IdxResult])
Colors[IdxResult],
…
?
06
读取条码的方向值,但是值是为什么是这个数值,还不清楚。
}
get_bar_code_param
orientation'
InputOrient)
orientation_tol'
InputOrientTol)
Mode
Default
set_bar_code_param
],
[InputOrient,InputOrientTol])
(Seconds1)
(Seconds2)
Time
(Seconds2-Seconds1)*1000
Orientation)
Row,
Col)
*gen_arrow_contour_xld
(Arrow,
Row+sin(rad(Orientation))*70,
Col-cos(rad(Orientation))*70,
Row-sin(rad(Orientation))*70,
Col+cos(rad(Orientation))*70,
25,
25)
*dev_display
(Arrow)
暂时获取方向的箭头Arrow,只能获取