前言
最近因為需求的關係,需要把直方圖相關資訊儲存成檔案,在OpenCV時有一些函式方法可以解決(Ex:CvOpenFileStorage、cvWrite...),但是EmguCV卻不好找
,而且OpenCV相關個涵式在CvInvoke中也不齊全(Ex:cvWrite不存在),想使用C#的XmlSerializer,也會發現EmguCV的值方圖類別DenseHistogram不支援,好在後發現了一篇討論文解決了我的疑惑,
於是趕緊記錄下來!
解決方式
使用BinaryFormatter二位元序列的方式把整個資料Save至檔案或Load到DenseHistogram
Save存入檔案
Load至DenseHistogram
public static void HistogramSave(DenseHistogram _histogram, string _filaname) { System.IO.Stream stream; BinaryFormatter bformatter; // Open the saved histogram try { // serialize histogram stream = File.Open(_filaname, FileMode.Create); bformatter = new BinaryFormatter(); bformatter.Serialize(stream, _histogram); stream.Close(); } catch (Exception exp) { MessageBox.Show(exp.ToString()); } }
public static DenseHistogram HistogramLoad(string _filaname) { System.IO.Stream stream; BinaryFormatter bformatter; DenseHistogram histLoaded; // Open the saved histogram try { if (File.Exists(_filaname)) { stream = File.Open(_filaname, FileMode.Open); bformatter = new BinaryFormatter(); histLoaded = (DenseHistogram)bformatter.Deserialize(stream); stream.Close(); return histLoaded; } } catch (Exception exp) { MessageBox.Show(exp.ToString()); } return null; }
沒有留言:
張貼留言