c++ - OpenCV 1.x 后端

标签 c++ c opencv

我想并行化 opencv 项目的源代码,它必须是纯 C 语言。直到现在我一直相信 opencv 1.x 是基于 C 的。但是在查看 1.0 源代码时,我看到了 C++ 文件,还使用了运算符和类。它真的是 C 还是 C/C++ 的混合。

最佳答案

对于使用 openCV 的普通开发人员来说,这没有任何影响。

openCV 提供了一个 C 接口(interface),无论它是用 C、C++ 还是汇编程序实现的,它都是可用的。它可能(它不是)甚至在 PASCAL 或 COBOL 中实现并导出到可在 C 中使用的库,这与使用它的开发人员无关。

在 openCV 1.0 的特殊情况下,它确实是使用 C++ 实现的。
C++ 的设计目标是与 C 的互操作性。 extern "C" 提供了互操作性,因此为 openCV 1.0 提供 C 接口(interface)很容易。

考虑示例 cxcore.h :

(...omited...)

#ifdef __cplusplus
extern "C" {
#endif

/******************************************************************************
*          Array allocation, deallocation, initialization and access to element
\******************************************************************************

/* <malloc> wrapper.
   If there is no enough memory, the function
   (as well as other OpenCV functions that call cvAlloc)
   raises an error. */
CVAPI(void*)  cvAlloc( size_t size );

(...omited... )

但是 OP 是关于 fork openCV 来并行化它。在那种情况下,这是一个非常相关的问题。
如果 1.0 在 C 中,2.0 在 C++ 中,那么使用 1.0 作为基础会有优势。
但事实并非如此,因此您不妨从最新的 openCV 中 fork 。

关于c++ - OpenCV 1.x 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33101883/

相关文章:

c - Clock_t 和 time_t 或 time(NULL) 和 Clock() 之间的区别

c++ - 如何将 std::sort 与对和引用一起使用

c - getpass 函数的更好替代方案

c++ - 如何用QToolButton正确管理文本和图标?

C程序编译问题

java - Java Android Opencv 2.3 上的凸包

c++ - OpenCV 断言错误 mat.hpp 第 570 行

opencv - OpenCV2.3.1,基本程序,在QtCreator中不起作用

c++ - 为什么 C++ 需要用户提供的默认构造函数来默认构造 const 对象?

C++ STL 列出两个结构交叉引用