在 OpenCV 中,访问由
定义的
cv::Mat
的元素
cv::Mat mat = cv::Mat::zeros(3, 3, CV_8UC1);
我们必须做:
mat.at<uchar>(1,2);
将
uchar
信息提供给 mat.at() 对我来说似乎是多余的。它不是已经编码在矩阵的标头中了吗?为什么我们必须提供它?
cv::Mat
支持存储各种类型的元素。
如果没有
at
方法的模板参数,API 就无法定义返回类型。
这就是为什么各种
at
方法实际上是方法模板,模板参数决定了它们的返回值。
例如:
template<typename _Tp>
_Tp & cv::Mat::at(const int * idx) // NOTE: return return type `_Tp`
// is the template parameter