我想并行化 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/