OpenCV:在C API中使用c++类是个坏主意吗?
OpenCV: Is it a bad idea to use C++ classes with the C API?
例如,我有一个方法:
(CvRect rect, CvMemStorage* storage)
和另一个问题:
(CvSubdiv2D* subdiv, CvPoint2D32f pt)
所以我想使用cv::Rect
类而不是CvRect
, cv::Point2d
而不是CvPoint2D32f
(尽管可能使用cv::Point2f
而不是cv::Point2d
会更充分,假设这一切都是足够的)。
无论如何,我可以创建一个类来封装C版本,而不是相应的行为,我猜,但我只是想知道这将是灾难性的?我没有得到任何编译器错误的方法,使用-Wall -Wextra
。
这不是一个好主意。每个接口都有自己的类型,其中许多类型不被其他接口支持。您将发现,为了能够使用C和c++接口,您不得不频繁地在类型之间进行转换,而这些任务也会给您的应用程序带来性能成本。
我不建议将接口混合在一起。在核心功能方面,它们的开发是为了支持相同的图像/视频处理操作。现在我看不出有什么理由把它们混在一起。
与在C应用程序中运行相比,它很可能不会产生任何运行时差异。
所以这主要是一个风格问题。您要做的是编写两个Wrapper函数,这完全可以。
我在这两种情况下都用WinAPI和OpenGL做了类似的事情,用basic_Point2D和basic_Point2D替换它们的点结构。系统在各个方面都工作良好,因为两个结构体都是二进制兼容的。
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 将std::string传递给WriteConsole API
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在gtest.中使用fff.h模拟系统API
- 有没有任务栏API可以立即应用注册表更改
- C++win32 API创建多个类似视口的窗口
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 如何将真正的字符串从python c-api转换为python脚本
- 使用Qt框架在c ++类中创建API调用
- Libreoffice API (UNO):需要更改用户的 xTextField 文本
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 使用 Python Extension API 包装复杂C++类
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 第三方 API 中的编译错误 - Visual Studio
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- Issues with Win32 ReadProcessMemory API