使用 OpenCV 高效加載大型 Mat 物件
將大型 Mat 物件載入到記憶體中是常見的操作。雖然 OpenCV 中的 FileStorage 方法是一個簡單的選擇,但有沒有更有效的替代方案?
以二進位格式更快地載入
提高效率的關鍵在於儲存和以二進位格式載入 Mat。 OpenCV 專門為此目的提供了 matwrite 和 matread 函數。
顯著的效能改善
對不同大小的 Mat 物件執行的測試顯示,使用二進位載入時效能顯著提高透過檔案儲存。對於較小的圖像(250K 行,192 列),二進位載入將載入時間從 5.5 秒減少到僅 50 毫秒。同樣,對於較大的圖像(1M行,192列),二進位載入只需要197毫秒,而FileStorage由於記憶體限製而無法載入。
實作並使用
matwrite 函數接受檔案名稱和 Mat 物件作為輸入,而 matread 只接受檔案名稱。這些函數以二進位格式處理必要的標頭和資料儲存/檢索。
示例代碼
這裡是演示matwrite 和matread 的示例代碼函數:
結論
與FileStorage 方法相比,使用二進位格式將大型Mat物件載入到記憶體中可以顯著提高效能。 matwrite 和 matread 函數提供了一個方便有效的方法來實作這種方法。透過實施此技術,您可以減少載入時間並提高基於 OpenCV 的應用程式的效能。
以上是二進位檔案 I/O 是載入大型 OpenCV Mat 物件時比 FileStorage 更有效的替代方案嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!