多话不说,见下图:
这是Halcon示例程序中有的图,一般正常情况下,是读不出来的。碰到这样的图怎么办?
解决办法:
1、通过像素直方图提取其黑色条区域
2、生成一幅新图
3、将提取黑色条区域重新生成一幅图。
4、读取条码值就可以实现。
原代码如下:
dev_close_window ()
read_image (Image, 'barcode/ean13/ean13_to_preprocess_04')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
threshold (Image, Regions, 2, 7)
connection(Regions, ConnectedRegions)
shape_trans(ConnectedRegions, RegionTrans,'rectangle1')
select_shape (RegionTrans, SelectedRegions, 'area', 'and', 510.7, 5000)
gen_image_proto(Image, ImageCleared, 255)
paint_region(SelectedRegions, ImageCleared, ImageResult, 0, 'fill')
create_bar_code_model([], [], BarCodeHandle)
find_bar_code(ImageResult, SymbolRegions, BarCodeHandle, 'EAN-13', DecodedDataStrings)
disp_message(WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'true')
clear_bar_code_model(BarCodeHandle)