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

被折叠的 条评论
为什么被折叠?



