Help with loading file into an array

P

peter berrett

Hi all

I am trying to build a program that can find comets in a series of astronomical images. I have already written functions to find the comet in a seriesof images, the data of which is stored in embedded lists.

The area I am having difficulty with is take a standard gif file (1024 x 1024) and reading it into an array or embedded lists.

In a nutshell here is an example of what I want to do

Let's say I have a gif file called 20130428_0000_c2_1024.gif in a folder called c:\comets

I want to read the data from that gif file taking the red data (excluding the green and blue data) and store that in an array called Image[][] which is a nested array length 1024 with a list in each item of 1024 length (ie 1024 x 1024)

Could someone please provide a piece of code to do the above so I can then go on to modify it to pick up different files from different folders? In particular I am keen to seen how you read in the data and also how you changethe directory from which you are reading the image.

For the record this is not for homework but is a pet project of mine. I have already written a version of the program in Justbasic but python is faster. I am also interested in readers views as to which is the simplest and best way to achieve what I am trying to do.


Thanks Peter
 
F

Fábio Santos

Using a nested array should waste a lot of memory. I think you should use
PIL to load and read the image.
I want to read the data from that gif file taking the red data (excluding
the green and blue data) and store that in an array called Image[][] which
is a nested array length 1024 with a list in each item of 1024 length (ie
1024 x 1024)
 
C

Colin J. Williams

Using a nested array should waste a lot of memory. I think you should
use PIL to load and read the image.
I want to read the data from that gif file taking the red data
(excluding the green and blue data) and store that in an array called
Image[][] which is a nested array length 1024 with a list in each item
of 1024 length (ie 1024 x 1024)
Fabio,

Have you considered numpy?

Colin W.
 
J

Jens Thoms Toerring

peter berrett said:
I am trying to build a program that can find comets in a series of
astronomical images. I have already written functions to find the comet in a
series of images, the data of which is stored in embedded lists.
The area I am having difficulty with is take a standard gif file (1024 x
1024) and reading it into an array or embedded lists.
In a nutshell here is an example of what I want to do
Let's say I have a gif file called 20130428_0000_c2_1024.gif in a folder
called c:\comets
I want to read the data from that gif file taking the red data (excluding
the green and blue data) and store that in an array called Image[][] which
is a nested array length 1024 with a list in each item of 1024 length (ie
1024 x 1024)
Could someone please provide a piece of code to do the above so I can then
go on to modify it to pick up different files from different folders? In
particular I am keen to seen how you read in the data and also how you
change the directory from which you are reading the image. >

the following should do the trick using, as Fábio already
suggested, the Python Image Library (PIL):

----------------8<-------------------------
#!/ur/bin/env python

import Image

im = Image.open( 'c:/comets/20130428_0000_c2_1024.gif' )
w, h = im.size
red_arr = [ ]
for y in range( h ) :
red_line = [ ]
for x in range( w ) :
red_line.append( im.getpixel( ( x, y ) )[ 0 ] )
red_arr.append( red_line )
----------------8<-------------------------

For obvious reasons I couldn't use 'Image' as the name of the list
of lists, so it's 'red_arr' instead. This is probably not the fas-
test solution, but it's simple and hopefully will get you started.

Concerning reading other files: here I may not understand your
problem since it looks rather trivial to me by simply passing
the open() method of 'Image' the name of a file in a different
directory.
Regards, Jens
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,058
Latest member
QQXCharlot

Latest Threads

Top