使用OpenCV的Algorithm基类构建自定义算法类

OpenCV引入类Algorithm来统一算法的参数读写接口。使用这一基类可以方便用户创建自定义算法类,而不用重新实现set(),get(),read(),write()。本文简单介绍如何使用Algorithm类来快速构建算法类。

在OpenCV的文档[1]中指出,继承Algorithm类来实现自定义算法类需要在算法类中添加一些“半标准”代码。具体步骤如下:

  1. 创建类并以Algorithm为基类。
  2. 将算法参数作为类的成员。(Algorithm::get()只支持某些数据类型(参考官方文档),要合理选择算法参数。)
  3. 将公有虚函数AlgorithmInfo* info() const;加入类中。
  4. 加上构造函数,AlgorithmInfo实例并实现info()方法。
  5. 在实现info()方法的文件内加入公有函数来调用该算法的info()。

Algorithm类及AlgorithmInfo类定义在opencv2/core/core.hpp中。

前三步naive。步骤4可以通过OpenCV在opencv2/core/internal.hpp中定义的宏CV_INIT_ALGORITHM来实现。

#define CV_INIT_ALGORITHM(classname, algname, memberinit) \
    static ::cv::Algorithm* create##classname() \
    { \
        return new classname; \
    } \
    \
    static ::cv::AlgorithmInfo& classname##_info() \
    { \
        static ::cv::AlgorithmInfo classname##_info_var(algname, c
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值