2011-05-14 29 views
2

什麼是存儲一些附加信息以及圖像像素的最佳方式?現在我正在考慮像vector<vector<vector<Info*>>>這樣的兩個第一個索引指示相應的像素座標。有什麼更好的嗎?與cv :: Mat元素一起存儲更多信息

回答

1

大多數情況下沒有單一的「最佳」解決方案。

你的載體向量看起來有點複雜,但如果每個座標總是有很多相關的信息,那麼它可能很好。

如果只有一些像素有額外的信息,你都不可能使用更稀疏的數據結構

map<coordinates, info> 

,並只存儲信息的幾個座標。

1

如果您的信息不是很複雜(可以用最多4通道矢量來描述),您可以將信息存儲在另一個cv :: Mat中,其大小與您的圖像大小相同。如果每個像素的信息是比較複雜的,你可以存儲一個指針在每個元素:

cv::Mat additionalInfo(image.size(), CV_32S); // CV_32S = int (usually the type used for pointers) 
additionalInfo.at<CV_32S>(col,row) = new ComplexStruct; // Writing 
ComplexStruct* info = additionalInfo.at<CV_32S>(col,row); // Reading 

在嘗試這種方法,確保: 的sizeof(CV_32S)==的sizeof(ComplexStruct *)