如何找出OpenCV .at函数在c++中使用的类型



是否有一种简单可靠的方法来找出我应该为给定CV类型的Mat的。at函数使用什么等效类型?

例如,我如何知道空格应该用ushort, floatVec3b填充?

Mat mat1(1, 2, CV_16UC1, 12345);
std::cout << mat1.at<___>(0, 1) << "n";
Mat mat2(1, 2, CV_32FC1, 67.89);
std::cout << mat2.at<___>(0, 1) << "n";
Mat mat3(1, 2, CV_8UC3, Scalar(65, 66, 67));
std::cout << mat3.at<___>(0, 1)[2] << "n";

使用

  • 类型:http://ninghang.blogspot.de/2012/11/list-of-mat-type-in-opencv.html
  • vec <<li>向量:http://docs.opencv.org/modules/core/doc/basic_structures.html/gh>

我构造了下面的表:

        C1      C2     C3     C4     C6 (not sure whether C6 subtype exists as a macro)
CV_8U   uchar   Vec2b  Vec3b  Vec4b
CV_8S   char    -       
CV_16U  ushort  -
CV_16S  short   Vec2s  Vec3s  Vec4s
CV_32S  int     Vec2i  Vec3i  Vec4i
CV_32F  float   Vec2f  Vec3f  Vec4f  Vec6f
CV_64F  double  Vec2d  Vec3d  Vec4d  Vec6d

uchar == unsigned charushort == unsigned short

对于缺失的类型,如果你愿意,可以创建自己的typedef:

typedef Vec<ushort, 2> Vec2us;

或者你只是用一个相同大小的类型(Vec2s)访问它,然后转换它

但最终我认为理解格式意味着什么(32位浮点数与3通道=每个矩阵元素3个浮点值)如果看表要好得多…

相关内容

  • 没有找到相关文章

最新更新