Python crashes at the end of experiment: Image.open
Hey everyone,
I am really new to OpenSesame and I am experiencing a problem. I have to write some inline script but OpenSesame keeps crashing at the end of every experiment. I have deduced that the problem is with the Image.open function from PIL. Does anyone know how to fix this?
Kind regards,
Inger
from PIL import Image
from math import hypot
## Preload mouse
my_mouse = mouse()
## Preload canvas
my_canvas = canvas(exp)
star = exp.pool[u'star5.png']
src = exp.get_file('star5.png')
my_canvas.image(star)
img = Image.open(src)
Comments
Also this is the message I get in the debug window
Hi Inger,
This error indicates that the Python interpreter itself crashes, rather than that there's a bug in your script per se. That being said, your script is a bit funny, because you're opening the same image twice. What exactly are you trying to do?
Cheers!
Sebastiaan
Check out SigmundAI.eu for our OpenSesame AI assistant!
Thanks for the feedback! Is there any way to make sure that the Python does not crash?
I open the image twice because they have two different purposes. My task involves participants moving around the mouse and me having the know the color of the pixel that the mouse location is on. If the mouse is on the white part of the image, black part, etc.
So the purpose of the first image (var star) is to display the image on the canvas and the second image (var img) is to be able to backtrack the color of the pixel because you need to use PIL Image for that.
It's a bug in Python itself, or in one of the low-level libraries. So no, not really, except indirectly by avoiding the situation that causes Python to crash.
I suspect that the crash may occur because the file is not immediately closed by OpenSesame, and then if you open it again with
Image.open()it causes some kind of conflict. That's my best guess in any case.What I would do is first open the image and load it into a numpy array with
scipy.misc.imread(). You can then get the pixel colors from this array.This will (or should) immediately close the image file again, and then you can use
Canvas.image()again without having the same file open twice.Does that help?
Check out SigmundAI.eu for our OpenSesame AI assistant!
Dear Sebastiaan,
Thank you for your remark. The problem was indeed due to that the image of with the PIL function did not close properly. I worked around it by calling Image.close() which seems to be doing the trick! I figured it out before seeing your remark, but I assume that your solution would work as well.
Kind regards,
Inger