【发布时间】:2011-04-17 14:52:14
【问题描述】:
我是 opencv 库的新手,但自 2.x 以来仍然对 C++ Mat 类感到困惑。
我遇到的问题:
-
类 Mat 的非模板版本是运行时类型的,但是没有函数可以显示 Mat 对象的符号名称,只有一个
cv::Mat::type(),它返回整数。 -
如果一个矩阵是 CV_8U 或 unsigned char 类型,那么我做加法运算...是否有可能导致溢出?还是opencv足够聪明,可以转换数据类型并执行所谓的“饱和算术”?例如
unsigned char a = 255; unsigned char b = a+a; // == 255a+a 的操作:
unsigned char b = (unsigned char) clipTo_0_255((float)a + (float)a)); 如果我想避免微妙的
cv::Mat::at<_Tp>,大多数解决方案建议使用class Mat_<_Tp>的派生模板版本。但是_Tp必须是C++基元类型,我不知道基元类型和CvMat类型系统的映射关系……(也许直截了当……)-
opencv 数据类型转换是否等同于 C/C++ 类型转换?例如
float a = 1.5; int b = (int) a; // == 1int a = 2; float b = static_cast<int>(a); // == 2.0
【问题讨论】:
-
顺便说一句...实验表明许多opencv函数会返回CV_8U类型的Mat...