关于分别模板匹配每个roi区域共5个区域并输出结果的程序,代码错在哪里?
-
import sensor, image, time
from image import SEARCH_EX, SEARCH_DSsensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()img.draw_rectangle((5,50,25,35),color = (0, 0, 0))
img.draw_rectangle((30,50,25,35),color = (0, 0, 0))
img.draw_rectangle((55,50,25,35),color = (0, 0, 0))
img.draw_rectangle((80,50,25,35),color = (0, 0, 0))
img.draw_rectangle((105,50,25,35),color = (0, 0, 0))templates = ["/0.pgm", "/1.pgm", ] #保存多个模板
while(True):
clock.tick()
img = sensor.snapshot()
a=0 #依次对每个共5个roi区域进行模板匹配,得出结果
if a==0:
for t in templates:
template = image.Image(t)
#对每个模板遍历进行模板匹配
r = img.find_template(template, 0.70, step=4, search=SEARCH_EX) , roi=(5, 50, 25, 35))
if r:
img.draw_rectangle(r, color=0)
print(t)
a+=1
elif a==1:
for t in templates:
template = image.Image(t)
r = img.find_template(template, 0.70, step=4, search=SEARCH_EX) , roi=(30, 50, 25, 35))
if r:
img.draw_rectangle(r, color=0)
print(t)
a+=1
elif a==2:
for t in templates:
template = image.Image(t)
r = img.find_template(template, 0.70, step=4, search=SEARCH_EX) , roi=(55, 50, 25, 35))
if r:
img.draw_rectangle(r, color=0)
print(t)
a+=1
elif a==3:
for t in templates:
template = image.Image(t)
r = img.find_template(template, 0.70, step=4, search=SEARCH_EX) , roi=(80, 50, 25, 35))
if r:
img.draw_rectangle(r, color=0)
print(t)
a+=1
else a==4:
for t in templates:
template = image.Image(t)
r = img.find_template(template, 0.70, step=4, search=SEARCH_EX) , roi=(105, 50, 25, 35))
if r:
img.draw_rectangle(r, color=0)
print(t)
a=0
#print(clock.fps())
-
代码出现什么错误?
-
此回复已被删除!
-
import sensor, image, time from image import SEARCH_EX, SEARCH_DS sensor.reset() sensor.set_pixformat(sensor.GRAYSCALE) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time = 2000) clock = time.clock() templates = ["/0.pgm", "/1.pgm", ] #保存多个模板 while(True): clock.tick() img = sensor.snapshot() img.draw_rectangle((5,50,25,35),color = (0, 0, 0)) img.draw_rectangle((30,50,25,35),color = (0, 0, 0)) img.draw_rectangle((55,50,25,35),color = (0, 0, 0)) img.draw_rectangle((80,50,25,35),color = (0, 0, 0)) img.draw_rectangle((105,50,25,35),color = (0, 0, 0)) a=0 #依次对每个共5个roi区域进行模板匹配,得出结果 if a==0: for t in templates: template = image.Image(t) #对每个模板遍历进行模板匹配 r = img.find_template(template, 0.70, step=4, search=SEARCH_EX, roi=(5, 50, 25, 35)) if r: img.draw_rectangle(r) print(t) a+=1 elif a==1: for t in templates: template = image.Image(t) r = img.find_template(template, 0.70, step=4, search=SEARCH_EX, roi=(30, 50, 25, 35)) if r: img.draw_rectangle(r) print(t) a+=1 elif a==2: for t in templates: template = image.Image(t) r = img.find_template(template, 0.70, step=4, search=SEARCH_EX, roi=(55, 50, 25, 35)) if r: img.draw_rectangle(r) print(t) a+=1 elif a==3: for t in templates: template = image.Image(t) r = img.find_template(template, 0.70, step=4, search=SEARCH_EX, roi=(80, 50, 25, 35)) if r: img.draw_rectangle(r) print(t) a+=1 else: for t in templates: template = image.Image(t) r = img.find_template(template, 0.70, step=4, search=SEARCH_EX, roi=(105, 50, 25, 35)) if r: img.draw_rectangle(r) print(t) a=0
-
@kidswong999 程序只能识别第一位的0,是逻辑错误吗
-
你的逻辑很奇怪,遍历区域直接for循环就行。那个a加来加去没意义。
rois = [(5, 50, 25, 35),(30, 50, 25, 35),(55, 50, 25, 35),(80, 50, 25, 35),(105, 50, 25, 35)] for roi in rois: for t in templates: template = image.Image(t) r = img.find_template(template, 0.70, step=4, search=SEARCH_EX, roi=roi) if r: img.draw_rectangle(r) print(t)