矩阵类型OpenCV

时间:2016-07-11 02:19:32

标签: c++ opencv matrix types

我想编写一些泛型函数,它对Opencv 3.1 AppBar对象的单个元素进行操作,例如:

cv::Mat

问题是我读过Data Types并且我对如何实现(或调用)尊重它们的这种功能感到很困惑。

我的意思是:假设template <typename T> T accumulate(cv::Mat mat){ T acc=0; for(int i=0;i<mat.cols();i++) for(int j=0;j<mat.rows();j++) acc += mat.at<T>(i,j); return acc; } 类型为matCV_32FC通过accumulate正确调用它是accumulate<float>(mat)用户的责任。这是一个着名的错误来源(堆栈溢出充满了问题,因为人们在调用at时使用了错误的类型。)

如何避免这种情况并自动执行此过程?

1 个答案:

答案 0 :(得分:0)

OpenCV中有Mat_<T>个模板派生自Mat类。您可以使用cv::Mat_<T> mat

然后,您应该可以在accumulate()上致电cv::Mat_<float>

请参阅OpenCV Mat_类参考: http://docs.opencv.org/trunk/df/dfc/classcv_1_1Mat__.html#gsc.tab=0