如何对openmv颜色识别捕捉的色块进行模板匹配?
-
import sensor, image, time from image import SEARCH_EX, SEARCH_DS thresholds = (57, 92, -65, -26, -4, 45) sensor.reset() sensor.set_contrast(1) sensor.set_gainceiling(16) sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) # must be turned off for color tracking sensor.set_auto_whitebal(False) # must be turned off for color tracking clock = time.clock() template1 = image.Image("/1.pgm") template2 = image.Image("/2.pgm") template3 = image.Image("/3.pgm") while(True): clock.tick() img = sensor.snapshot() for blob in img.find_blobs([thresholds], pixels_threshold=200, area_threshold=200, merge=True): img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy()) r1 = img.find_template(template1, 0.70, step=4, search=SEARCH_EX, roi = blob.rect()) if r1: img.draw_rectangle(r1) r2 = img.find_template(template2, 0.70, step=4, search=SEARCH_EX, roi = blob.rect()) if r2: img.draw_rectangle(r2) r3= img.find_template(template3, 0.70, step=4, search=SEARCH_EX, roi = blob.rect()) if r3: img.draw_rectangle(r3) print(clock.fps())
请问要怎么改才能实现
-
find_blob可以返回坐标和区域,模板匹配用roi参数限制模板匹配的范围。
-
我改了一下程序结果报错 OSError: Image format is not supported!
是怎么回事import sensor, image, time from image import SEARCH_EX, SEARCH_DS thresholds = (57, 92, -65, -26, -4, 45) sensor.reset() sensor.set_contrast(1) sensor.set_gainceiling(16) sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) # must be turned off for color tracking sensor.set_auto_whitebal(False) # must be turned off for color tracking clock = time.clock() template1 = image.Image("/1.pgm") template2 = image.Image("/2.pgm") template3 = image.Image("/3.pgm") reset=0 while(True): clock.tick() if reset==1: sensor.set_pixformat(sensor.RGB565) sensor.skip_frames(time = 2000) reset=0 img = sensor.snapshot() blobs = img.find_blobs( [thresholds], pixels_threshold=200, area_threshold=200, merge=True) if blobs: print(blobs) sensor.set_pixformat(sensor.GRAYSCALE) sensor.skip_frames(time = 2000) for blob in blobs: img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy()) r1 = img.find_template(template1, 0.70, step=4, search=SEARCH_EX, roi = blob.rect()) if r1: img.draw_rectangle(r1) r2 = img.find_template(template2, 0.70, step=4, search=SEARCH_EX, roi = blob.rect()) if r2: img.draw_rectangle(r2) r3= img.find_template(template3, 0.70, step=4, search=SEARCH_EX, roi = blob.rect()) if r3: img.draw_rectangle(r3) reset=1 print(clock.fps())
-
blobs = img.find_blobs( [thresholds], pixels_threshold=200, area_threshold=200, merge=True)
这一句,img是rgb565格式的彩图。
if blobs: print(blobs) sensor.set_pixformat(sensor.GRAYSCALE) sensor.skip_frames(time = 2000) for blob in blobs: img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy())
这里,你虽然设置了Gragscale灰度图,但是你没有把图像赋值给img,即应该为:
if blobs: print(blobs) img = sensor.set_pixformat(sensor.GRAYSCALE) #注意这一句 sensor.skip_frames(time = 2000) for blob in blobs: img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy())
-
我改了一下结果报错AttributeError: 'bool' object has no attribute 'find_template'