Хранение дополнительной информации вместе с элементами cv :: Mat - PullRequest
2 голосов
/ 14 мая 2011

Как лучше всего хранить дополнительную информацию вместе с пикселями изображения? Прямо сейчас я думаю о чем-то вроде vector<vector<vector<Info*>>> с двумя первыми индексами, указывающими соответствующие координаты пикселя. Есть ли что-то лучше?

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Если ваша информация не сложна (может быть описана вектором до 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 *)

1 голос
/ 14 мая 2011

Чаще всего не существует единого «лучшего» решения.

Ваш вектор векторов кажется немного сложным, но он может быть хорош, если с каждой координатой всегда связано много информации.

Если только некоторые пиксели имеют дополнительную информацию, вы можете использовать более разреженную структуру данных

map<coordinates, info>

и хранить информацию только для нескольких координат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...