Memory error

import time, sensor, image
from pyb import UART
from image import SEARCH_EX, SEARCH_DS
ser = UART(3,115200,timeout_char=1000)

Reset sensor


Set sensor settings


Max resolution for template matching with SEARCH_EX is QQVGA


You can set windowing to reduce the search image.

#sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60))

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):
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:
if l:

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?

Hi, it would help if you could let me know which line of code it gives the memory error on.

template = image.Image("/Right.pgm")
template = image.Image("/Left.pgm")

These two lines causes the problem. Apparently my files are too big so Im assuming compress() method but dont know how to use it.

You can’t use compress for processing.

Um, is there a reason you can’t use AprilTags? It’s far easier to use and does the job really well. You can create one tag for left and one tag for right.