debugging - OpenCV 中 CV_32FC3 和 CV_64FC3 的区别?

标签 debugging opencv matrix

我在测试 OpenCV 矩阵和显示函数时遇到了这个错误。折腾了半天多才揭晓:

我最初尝试显示 OpenCV 矩阵,而不考虑矩阵的类型,例如CvMat 或 Mat,... 用我另一个帖子的vasile先生推荐的展示方式Multi channel Mat display function

display 方法只是将矩阵的所有数据提取到 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();

输出:

enter image description here

// 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();

输出: enter image description here

它们应该是一样的。对吧??!!

最佳答案

在第二个例子中,你应该将数组声明为

double objpts[12] = {0, 105, 105, 0, 0, 0, 105, 105, 0, 0, 0, 0};

你可以将CV_xxtCn读作

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

关于debugging - OpenCV 中 CV_32FC3 和 CV_64FC3 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12191211/

相关文章:

windows - 如何在 Windows 上调试 Rust 单元测试?

c++ - 如何重定向 qDebug、qWarning、qCritical 等输出?

python - 如何使用python将盐和胡椒粉噪声仅应用于图像的特定部分?

python - Matlab 中的高效矩阵乘法

python - 从单词列表中删除引号和双引号

silverlight - 运行Silverlight应用程序时如何调试浏览器崩溃

python - OpenCV 错误:参数 'M' 的预期 cv::UMat

python - 如何在 Python 中捕获 "OpenCV Error"

matlab - 将单元格元素打印到文本文件

r - 逆 cbind() 函数 R