为什么在访问矩阵元素时要指定类型?

问题描述 投票:0回答:1

在 OpenCV 中,访问由

 定义的 
cv::Mat

的元素
cv::Mat mat = cv::Mat::zeros(3, 3, CV_8UC1);

我们必须做:

mat.at<uchar>(1,2);

uchar
信息提供给 mat.at() 对我来说似乎是多余的。它不是已经编码在矩阵的标头中了吗?为什么我们必须提供它?

opencv
1个回答
0
投票

cv::Mat
支持存储各种类型的元素。

如果没有

at
方法的模板参数,API 就无法定义返回类型。

这就是为什么各种

at
方法实际上是方法模板,模板参数决定了它们的返回值。

例如:

 template<typename _Tp>
_Tp & cv::Mat::at(const int * idx)  // NOTE: return return type `_Tp` 
                                    //       is the template parameter
© www.soinside.com 2019 - 2024. All rights reserved.