一些OpenCV命令有什么不同?

时间:2013-04-30 13:52:56

标签: c++ opencv

如果我的问题可能过于古怪或其他原因,我真的很抱歉。但是,我发现自己在OpenCV中发现的一些命令之间有点混乱。 浏览the OpenCV documentation后,我发现有cvMemStorage和cv :: MemStorage,cvMat和cv :: Mat,cvSeq和cv :: Seq,cvNormalBayesClassifier和cv :: NormalBayesClassifier等命令。

那么,这些命令之间有什么区别?

它们只是C和C ++风格之间不同的命令风格吗?

那么为什么他们(OpenCV团队)在大多数c和c ++世界中只使用一种风格呢?

任何帮助和评论都会非常感激。 谢谢

2 个答案:

答案 0 :(得分:2)

约定似乎是cvSomething是C类型或函数,cv::Something是相应的C ++版本。在C ++中,cvnamespace

OpenCV维护C和C ++接口,这就是你获得两种变体的原因(还有python绑定,这可能会使一体化文档混乱)。

答案 1 :(得分:0)

OpenCV 2.x版的核心库是用C ++编写的。编码约定是在命名空间cv中包含所有内容。 (请参阅herehere)。

旧的API(版本1.x)是一个C API。惯例是添加前缀cv

旧的1.x API仍然暴露给客户端代码。通常,你不需要它。 (正如Dynamic structure的OpenCV文档中所述(因为您引用了cvCreateMemStorage),“如果您使用新的C ++,Python,Java等接口,您将不太可能需要此功能。使用std :: vector或其他高级别的数据结构。“)