OpenCV中函数模板的显式实例化

本文探讨了OpenCV库中如何使用函数模板,并详细解释了Mat::at函数模板的实例化过程。通过对比显式与隐式实例化的特点,帮助读者更好地理解并运用这些函数。
  1. 在使用OpenCV过程中,刚开始对于image.ptr<uchar>(i)outputImage.at<Vec3b>(i, j)[0]这样的函数比较困惑。
  2. 以Mat::at(int i)函数为例,在源代码中你会发现它是个函数模板。这样(到处都是函数模板):
    这里写图片描述
    之前学习相关内容的时候记得,不论类模板还是函数模板都要实例化后才能变成一个类或者函数。但是区别在于:类模板一般通过显式实例化的方式变为一个类的,比如vector实例化的时候要写为vector<uchar>这种方式;而函数模板一般都是隐式实例化的,即不用加<uchar> 这一部分,编译器可以通过参数的类型自动匹配实例化。
  3. 这里函数模板竟然也加了< > 这一部分!!!查找资料之后发现,其实这样做也是可以的,函数模板通过这样的显式实例化可以引导编译器做出您希望的选择。希望深入了解的可参考《C++ Primer Plus》第8.5节相关知识,这里贴出书上的一个例程,下图:
    这里写图片描述

这里写图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值