用多模板进行数字读取问题,要求是读取一组数据,数据长度会变,我现在写了一个支持5个长度的脚本,想知道时间更小的方法
-
templates=["/0.pgm","/1.pgm","/2.pgm","/3.pgm","/4.pgm","/5.pgm","/6.pgm","/7.pgm","/8.pgm","/9.pgm"] roi1=(0,10,30,40) roi2=(30,10,30,40) roi3=(60,10,30,40) roi4=(90,10,30,40) roi5=(120,10,30,40) #加载模板图片 clock=time.clock() #Run template matching while(True): clock.tick() img=sensor.snapshot() for t1 in templates: template=image.Image(t1) #对每个模板遍历进行模板匹配 r1=img.find_template(template,0.7,[roi1,step=4,search=SEARCH_EX]) if r1: img.draw_rectangle(r1) print(t1) for t2 in templates: template=image.Image(t2) #对每个模板遍历进行模板匹配 r2=img.find_template(template,0.7,[roi2,step=4,search=SEARCH_EX]) if r2: img.draw_rectangle(r2) print(t2) for t3 in templates: template=image.Image(t3) #对每个模板遍历进行模板匹配 r3=img.find_template(template,0.7,[roi3,step=4,search=SEARCH_EX]) if r3: img.draw_rectangle(r3) print(t3) for t4 in templates: template=image.Image(t4) #对每个模板遍历进行模板匹配 r4=img.find_template(template,0.7,[roi4,step=4,search=SEARCH_EX]) if r4: img.draw_rectangle(r4) print(t4) for t5 in templates: template=image.Image(t5) #对每个模板遍历进行模板匹配 r5=img.find_template(template,0.7,[roi3,step=4,search=SEARCH_EX]) if r4: img.draw_rectangle(r5) print(t5)
-
我没看懂你这个代码是在做什么。你的目的是什么?
数据长度会变,数据是什么?长度又是什么?
-
@kidswong999 我的目的是想识别一组数据,比如“12345”但是这组数据的长度是不固定的,如果我用多模板来做,那这个搜素出来的模板,排序是怎么排的,是以模板号索引高低来排的吗
-
@kidswong999 我这边担心输出的模板号不是按我数据数据排列的方式输出,所以我在每一个数字字符位置定义了一个roi(上面程序定义了5个位置的roi),然后在在这个roi位置搜素出对应位置的匹配结果
-
@klen 代码就是for循环遍历的,先调用哪个模版就是哪个模版。
-
@kidswong999 那有没有办法,可以对这个roi位置进行补正,可以随着产品位置变更进行位置补正
-
@klen 什么叫做位置补正?
OpenMV做OCR不合适的。