import time, sensor, image
from pyb import UART
from image import SEARCH_EX, SEARCH_DS
ser = UART(3,115200,timeout_char=1000)
Reset sensor
sensor.reset()
Set sensor settings
sensor.set_contrast(1)
sensor.set_gainceiling(16)
Max resolution for template matching with SEARCH_EX is QQVGA
sensor.set_framesize(sensor.QQCIF)
You can set windowing to reduce the search image.
#sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60))
sensor.set_pixformat(sensor.GRAYSCALE)
Load template.
Template should be a small (eg. 32x32 pixels) grayscale image.
template = image.Image(“/Right.pgm”)
template = image.Image(“/Left.pgm”)
clock = time.clock()
Run template matching
while (True):
clock.tick()
img = sensor.snapshot()
find_template(template, threshold, [roi, step, search])
ROI: The region of interest tuple (x, y, w, h).
Step: The loop step used (y+=step, x+=step) use a bigger step to make it faster.
Search is either image.SEARCH_EX for exhaustive search or image.SEARCH_DS for diamond search
Note1: ROI has to be smaller than the image and bigger than the template.
Note2: In diamond search, step and ROI are both ignored.
r = img.find_template(template, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
l = img.find_template(template, 0.70, step=4, search=SEARCH_EX)
if r:
img.draw_rectangle(r,5)
ser.write(0x01)
if l:
img.draw_rectangle(l,5)
ser.write(0x02)
print(clock.fps())
This is how my code looks like. Basically the right and left.pgm are arrows in right and left direction. They were working well and all the suddenly I am getting the message that I am out of memory. So Im trying to use compress() method to reduce the size of the pgm but I do not know how. Can anyone please help me out with this?