В чем разница между Mat и SparseMat в OpenCV? - PullRequest
0 голосов
/ 11 мая 2019

В чем разница между Mat и SparseMat в opencv? когда использовать каждый из них?

1 Ответ

1 голос
/ 11 мая 2019

Основное различие между cv::Mat и cv::SparseMat заключается в том, как они хранят данные внутри.

cv::Mat использует массив данных , тесно связанный с массивом данных C (в котором данные последовательно упаковываются, а адреса непосредственно вычисляются из индексов элемента)

в то время,

cv::SparseMat использует хеш-таблицу для хранения только ненулевых элементов. Эта хеш-таблица поддерживается автоматически, поэтому, когда количество (ненулевых) элементов в массиве становится слишком большим для эффективного поиска, таблица автоматически увеличивается.

Проще говоря,
cv::Mat класс используется для представления плотных массивов любого числа измерений.
cv::SparseMat класс используется, когда массив может быть очень большим по сравнению с количеством ненулевых записей.

  • И cv:Mat, и cv::SparseMat являются базовыми структурами данных в C ++-реализации OpenCV; класс cv::Mat является самой большой реализацией. Подробнее о них и других основных структурах данных в OpenCV здесь

  • Подробнее о базовом контейнере изображений в OpenCV здесь .

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