存储一些附加信息以及图像像素的最佳方法是什么?现在我正在考虑类似 vector<vector<vector<Info*>>>
的东西,其中有两个第一索引指示相应像素的坐标。还有更好的吗?
大多数情况下,没有单一的"最佳"解决方案。
您的向量向量似乎有点复杂,但如果每个坐标始终有很多相关信息,则可能会很好。
如果只有某些像素具有其他信息,则可以使用更稀疏的数据结构
map<coordinates, info>
并且只存储几个坐标的信息。
如果你的信息不复杂(可以用最多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*)