识别条形码每次旋转后的图片,并得到识别的结果
总代码:?
*读取图片
read_image (Image, 'barcode/ean13/ean1305')
*获取一些图片的信息以及设置显示信息
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
dev_set_color ('green')
dev_set_draw ('margin')
dev_set_line_width (3)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
*
*创建一个条形码阅读器的模型。
*'element_size_min'条码最小尺寸(宽度和间距)指 黑条或者白条的最小尺寸像素是1.5像素
create_bar_code_model ('element_size_min', 1.5, BarCodeHandle)
for Rot := 0 to 360 by 30
*旋转图像,绕中心旋转,逆时针旋转
rotate_image (Image, ImageRotate, Rot, 'weighted')
*显示旋转后的图片
dev_display (ImageRotate)
get_image_size (ImageRotate, Width, Height)
*将显示窗口设置与图像等大小
dev_set_window_extents (0, 0, Width, Height)
*寻找条形码并且进行识别,第四个参数可以选择auto,自动确定码制
find_bar_code (ImageRotate, SymbolRegions, BarCodeHandle, 'EAN-13', DecodedDataStrings)
dev_display (SymbolRegions)
*得到条形码的角度
get_bar_code_result (BarCodeHandle, 'all', 'orientation', Orientation)
*得到区域的行列坐标
area_center (SymbolRegions, Area, 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)
disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'true')
*如果小于360度继续旋转
if (Rot < 360)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
endif
endfor
* 清除模型的句柄
clear_bar_code_model (BarCodeHandle)
逐段分析:
*读取图片
read_image (Image, 'barcode/ean13/ean1305')
*获取一些图片的信息以及设置显示信息
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
*显示图片
dev_display (Image)
dev_set_color ('green')
dev_set_draw ('margin')
dev_set_line_width (3)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
*创建一个条形码阅读器的模型。
*'element_size_min'条码最小尺寸(宽度和间距)指 黑条或者白条的最小尺寸像素是1.5像素
create_bar_code_model ('element_size_min', 1.5, BarCodeHandle)
*每30度进行一次旋转
for Rot := 0 to 360 by 30
*旋转图像,绕中心旋转,逆时针旋转
rotate_image (Image, ImageRotate, Rot, 'weighted')
*显示旋转后的图片
dev_display (ImageRotate)
get_image_size (ImageRotate, Width, Height)
*将显示窗口设置与图像等大小
dev_set_window_extents (0, 0, Width, Height)
*寻找条形码并且进行识别,第四个参数可以选择auto,自动确定码制
find_bar_code (ImageRotate, SymbolRegions, BarCodeHandle, 'EAN-13', DecodedDataStrings)
dev_display (SymbolRegions)
*得到条形码的角度
get_bar_code_result (BarCodeHandle, 'all', 'orientation', Orientation)
*画出一个箭头
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)
*显示识别的结果
disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'true')
*如果小于360度继续旋转
if (Rot < 360)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
endif
endfor
* 清除模型的句柄
clear_bar_code_model (BarCodeHandle)
?旋转后的图像:
?
?
|