Louis
Louis

Reputation: 1305

Save an array of IplImage?

I have a database of images that i processed and saved as:

IplImage* database[10000];

database[0]= image1

database[1]= image2

... etc

Now I want to save this database IplImage matrix. How can i do this ? I know i can loop over all the images and save them one by one, but that is not really what i am looking for.

I read something like cvSave and cvLoad which allows me to save and load in one command but i am getting an error when i use it (cvSave("myimagedatabase.xml",&database);). Can you please guide me ?

Thank you in advance

Upvotes: 1

Views: 1265

Answers (2)

rossb83
rossb83

Reputation: 1762

What I gather from your question is that you are interested in saving strictly the data to some file, and then reloading back at a later point and that you would not be interested in opening the stored data in an image editing program or something like this.

First thing to consider, what are the important parts of IplImage * depth * height * width * nChannels * imageData array

What I would do is in a loop for each IplImage make a function to write each data value into a binary file. Give the file a header noting how many images there are. Using depth, height width and nChannels you can compute the size of the imageData array. Assuming all have the same depth (IPL_DEPTH_8U for example) then this should be easy, if they vary this can get tricky.

To load the data simply read in the binary data and header information and one by one loop through all the data and create new IplImages based on that data.

Upvotes: 0

Martin Beckett
Martin Beckett

Reputation: 96139

If you don't want to save them as individual images what about using a sequence of images - also known as a movie?

See opencv cvVideoWriter, if you select 0 as the codec they will be saved uncompressed

Upvotes: 1

Related Questions