前言
最近因為需求的關係,需要把直方圖相關資訊儲存成檔案,在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;
}
沒有留言:
張貼留言