2011-07-07 63 views
1

我有一個圖像數據庫,我處理並保存爲:保存一個IplImage數組?

IplImage * database [10000];

數據庫[0] =此搜索

數據庫[1] =圖像2

...等

現在我想保存該數據庫的IplImage矩陣。我怎樣才能做到這一點 ?我知道我可以循環播放所有圖像,並將它們逐一保存,但這並不是我正在尋找的內容。 (cvSave(「myimagedatabase.xml」,& database);)我讀了類似cvSave和cvLoad的東西,它允許我在一個命令中保存和加載,但當我使用它時發生錯誤(cvSave(「myimagedatabase.xml」,& database);)。你能指導我嗎?

預先感謝您

回答

0

我從你的問題收集的是,你有興趣在嚴格的數據保存到某些文件,然後在重裝回稍後的一點,你不會有興趣在圖像編輯程序或類似的東西中打開存儲的數據。

首先要考慮的,有什麼是IplImage 的重要組成部分*深度 *高度 *寬 * nChannels *爲imageData陣列

我會做的是在每個IplImage結構進行功能的環將每個數據值寫入二進制文件。給文件一個標題,註明有多少圖像。使用深度,高度寬度和nChannel可以計算imageData數組的大小。假設所有都具有相同的深度(例如IPL_DEPTH_8U),那麼這應該很容易,如果它們變化,這可能會變得棘手。

加載數據只需讀取二進制數據和頭信息,並逐個循環遍歷所有數據並根據該數據創建新的IplImage。

+0

鑑於opencv具有圖像讀/寫功能,可能更容易使用實際的電影。一旦添加了圖像大小,位數,幀尾檢查,然後你想編輯數據,你也可以使用AVI - 除非你真的被編程時間困住了。 –

1

如果你不想將它們保存爲單獨的圖像有關使用圖像序列的 - 也被稱爲電影嗎?

見OpenCV的cvVideoWriter,如果選擇0作爲編解碼器,他們將被保存未壓縮