[Image-SIG] PIL and multiprocessing module
Edward Cannon
cannon.el at gmail.com
Wed Jun 6 17:31:22 CEST 2012
You can convert the image to an array and then do whatever you want. Look in the Image documentation.
On May 13, 2012, at 2:11 PM, John Anderson <sontek at gmail.com> wrote:
> I was wondering if anyone has used PIL with the multiprocessing module.
>
> I would like to do some pixel by pixel translations using the .load() function and shared memory with the multiprocessing module.
>
>
> This is the code I have so far:
> def convert_to_gs_load(surf):
> width, height = surf.size
> pix = surf.load()
>
> for x in range(width):
> for y in range(height):
> alpha = 1
> red, green, blue = pix[x, y]
> average = (red + green + blue) // 3
> gs_color = (average, average, average, alpha)
> pix[x, y] = gs_color
>
> def convert_to_gs_load_mp(surf):
> width, height = surf.size
> pix = surf.load()
>
> t1 = multiprocessing.Process(target=gs_load, args=(pix, width, 0, height / 4))
> t2 = multiprocessing.Process(target=gs_load, args=(pix, width, height / 4, height / 2))
> t3 = multiprocessing.Process(target=gs_load, args=(pix, width, height / 2, 3 * height / 4))
> t4 = multiprocessing.Process(target=gs_load, args=(pix, width, 3 * height / 4, height))
> threads = [t1, t2, t3, t4]
>
> for thread in threads:
> thread.start()
>
> for thread in threads:
> thread.join()
>
> The problem is the 'pix' object is not in shared memory, so this doesn't work. Is there a way I could use Value or Array to store the object?
> _______________________________________________
> Image-SIG maillist - Image-SIG at python.org
> http://mail.python.org/mailman/listinfo/image-sig
More information about the Image-SIG
mailing list