OpenCV中CV_32FC3和CV_64FC3之间的区别?

TSL*_*SL_ 3 debugging opencv matrix

我正在测试OpenCV矩阵和显示功能,并有这个错误.我花了半天多的时间来揭示它:

我最初尝试显示OpenCV矩阵而不管基质的类型,例如CvMat或Mat,......使用由另一个帖子的Vasile先生推荐的显示方法多通道垫显示功能

显示方法简单地将矩阵的所有数据提取到cout流

这是我的计划:

// First: CV_32FC3 works OK

float objpts[12] = {0, 105, 105, 0, 0, 0, 105, 105, 0, 0, 0, 0};
CvMat objptsmat = cvMat( 1, 4, CV_32FC3, objpts);  
CvMat* objectPoints = &objptsmat;
CvMatShow(objectPoints);
getchar();
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

// Second: CV_64FC3 crashes

float objpts[12] = {0, 105, 105, 0, 0, 0, 105, 105, 0, 0, 0, 0};
CvMat objptsmat = cvMat( 1, 4, CV_64FC3, objpts);  
CvMat* objectPoints = &objptsmat;
CvMatShow(objectPoints);
getchar();
Run Code Online (Sandbox Code Playgroud)

输出: 在此输入图像描述

他们应该是一样的.对??!!

bjo*_*rnz 6

在第二个示例中,您应该将数组声明为

double objpts[12] = {0, 105, 105, 0, 0, 0, 105, 105, 0, 0, 0, 0};
Run Code Online (Sandbox Code Playgroud)

你可以读CV_xxtCn

  • xx:位数
  • t:type(F =浮点类型,S =有符号整数,U =无符号整数)
  • n:频道数量