如果我的问题可能过于古怪或其他原因,我真的很抱歉。但是,我发现自己在OpenCV中发现的一些命令之间有点混乱。 浏览the OpenCV documentation后,我发现有cvMemStorage和cv :: MemStorage,cvMat和cv :: Mat,cvSeq和cv :: Seq,cvNormalBayesClassifier和cv :: NormalBayesClassifier等命令。
那么,这些命令之间有什么区别?
它们只是C和C ++风格之间不同的命令风格吗?
那么为什么他们(OpenCV团队)在大多数c和c ++世界中只使用一种风格呢?
任何帮助和评论都会非常感激。 谢谢
答案 0 :(得分:2)
约定似乎是cvSomething
是C类型或函数,cv::Something
是相应的C ++版本。在C ++中,cv
是namespace
。
OpenCV维护C和C ++接口,这就是你获得两种变体的原因(还有python绑定,这可能会使一体化文档混乱)。
答案 1 :(得分:0)
OpenCV 2.x版的核心库是用C ++编写的。编码约定是在命名空间cv
中包含所有内容。 (请参阅here或here)。
旧的API(版本1.x)是一个C API。惯例是添加前缀cv
。
旧的1.x API仍然暴露给客户端代码。通常,你不需要它。 (正如Dynamic structure的OpenCV文档中所述(因为您引用了cvCreateMemStorage),“如果您使用新的C ++,Python,Java等接口,您将不太可能需要此功能。使用std :: vector或其他高级别的数据结构。“)