2
\$\begingroup\$

This checks surrounding pixels to my object's pixel:

self.surr = [None, None, None, None, None, None, None, None]

for i in range(9):
#for x in range(-1, 2):
    #for y in range(-1, 2):
        if i != 5:
            x = i % 3 - 2
            y = int((i % 3) / 3) - 1

        if x == 0 and y == 0:
            pass
        else:
            PAI = allPixels[(self.x + x) % width][(self.y + y) % height] if allPixels[(self.x + x) % width][(self.y + y) % height] != None else None

        self.surr[(y * 3) + x] = (PAI)

return self.surr

This returns a list of length 8 that holds either a Pixel object or None. allPixels is a 2D array that also holds either a Pixel object or None. I've tried then nested loops that are commented out but they run just a bit slower that the method I'm currently using. This however, is still too slow as if there are 3000 pixels on the screen, which is the lower bounds of the total pixels there will be on the screen in the end, do the maths and you have a LOT going on every frame.

Any help somehow making this run faster/more efficiently would be much appreciated.

If you want to see the whole code, it can be found here.

\$\endgroup\$
  • 2
    \$\begingroup\$ I assume allPi is a typo and is meant to be allPixels. Please edit. \$\endgroup\$ – vnp May 20 '18 at 17:59
  • \$\begingroup\$ @vnp Yes, it was a typo, I've edited it now \$\endgroup\$ – Thomas Ayling May 20 '18 at 18:04
  • 2
    \$\begingroup\$ Investigate: scipy-lectures.org/advanced/image_processing \$\endgroup\$ – Stephen Rauch May 20 '18 at 22:06

Browse other questions tagged or ask your own question.