要检查电芯表面是否有条码,可以知道电芯是否放反面了,起到视觉防呆的作用。
勇哥能想到的思路是:
一维,二维码识别,能识别则为有码面。
框选区域,算子intensity计算区域灰度值的平均值或者方差,以此来判断是否为有码面。
下面的程序两种方法都用到,把代码做个记录,供大家参考。
其结果可以看到,完美的情况下,两种方法都可以。
但其实还是有问题的,比如如果电池表面贴了膜,那么因为反光的原因,两种方法都有可能会误判断。
如果二维码很小,选择的区域很大,那么灰度平均都是差不多的,也没办法判断。
C#
* Code generated by Image Acquisition 01
dev_close_window()
dev_open_window(0, 0, 512, 512, 'black', WindowHandle1)
read_image (Image, 'C:/Users/Administrator/Desktop/柔性撕膜机v1.0/dx1.bmp')
create_bar_code_model ('check_char','present', BarCodeHandle)
set_bar_code_param (BarCodeHandle, 'num_scanlines', 30)
find_bar_code (Image, SymbolRegions1, BarCodeHandle, ['Code 128','Code 39'], BarCodeStrings)
disp_message (WindowHandle1, BarCodeStrings, 'window', 18, 12, 'blue', 'false')
clear_bar_code_model (BarCodeHandle)
create_data_code_2d_model ('QR Code', 'default_parameters', 'maximum_recognition', DataCodeHandle)
find_data_code_2d (Image,SymbolXLDs,DataCodeHandle, 'train', 'all',ResultHandles, DecodedDataStrings)
clear_data_code_2d_model(DataCodeHandle)
disp_message (WindowHandle1, DecodedDataStrings, 'window', 38, 12, 'blue', 'false')
dev_set_draw('margin')
gen_rectangle1 (ROI_0, 542.313, 417.156, 882.625, 756.766)
reduce_domain(Image, ROI_0, ImageReduced)
intensity(ImageReduced, Image, Mean, Deviation)
disp_message (WindowHandle1, Mean, 'window', 238, 112, 'yellow', 'false')
gen_rectangle1 (ROI_1, 905.125, 398.172, 1259.5, 767.313)
reduce_domain(Image, ROI_1, ImageReduced1)
intensity(ImageReduced1, Image, Mean1, Deviation1)
disp_message (WindowHandle1, Mean1, 'window', 408, 112, 'yellow', 'false')
dev_display(ROI_0)
dev_display(ROI_1)
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!
本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:


