OpenCV中的Mat和SparseMat有什么区别?

时间:2019-05-10 22:22:53

标签: c++ opencv

opencv中的Mat anf SparseMat和有什么区别? 什么时候使用每个?

1 个答案:

答案 0 :(得分:1)

cv::Matcv::SparseMat之间的主要区别在于它们内部存储数据的方式。

cv::Mat使用与C数据数组密切相关的 data数组(在该数组中,数据被顺序打包,并且可以直接从元素的索引计算地址)

cv::SparseMat使用哈希表仅存储非零元素。该哈希表是自动维护的,因此,如果数组中(非零)元素的数量太大而无法进行有效查找,则该表会自动增长。

简单来说,
cv::Mat类用于表示任意数量维的密集数组。
与非零条目数相比,数组可能非常大时,使用cv::SparseMat类。

  • cv:Matcv::SparseMat都是OpenCV的C ++实现中的基本数据结构;其中cv::Mat类是最大的实现。在OpenCV here

  • 中了解有关它们和其他基本数据结构的更多信息。
  • 详细了解OpenCV here中的基本图像容器。