【问题标题】:how to calculate and use cvMat mean value如何计算和使用 cvMat 平均值
【发布时间】:2012-09-23 03:18:57
【问题描述】:

在 openCV 备忘单 (C++) 中,我找到了矩阵运算mean()。当我使用它时:

float myMatMean = mean( MyMat );

我得到错误:

不存在从“cv::Scalar”到“float”的合适转换函数

我可以做些什么来使用这些数据?

【问题讨论】:

  • mean() 似乎返回了一个cv::Scalar 类型的变量,所以试试cv::Scalar myMatMean = mean(MyMat);
  • 如果您不想使用 Scalar,我认为它可以使用 double 而不是 float。但 Scalar 为您提供所有渠道的平均值

标签: c++ opencv matrix mean


【解决方案1】:

谢谢。

问题是尽管myMat 是二维图像。返回类型仍然是大小为 4Scalar

解决办法是

cv::Scalar tempVal = cv::mean( myMat );
float myMAtMean = tempVal.val[0];

【讨论】:

  • 什么意思?哪个标题?哪个名字?使用此类非标准函数时,请放置使用的命名空间。
  • 问题不在于“图像是 2D”,而是图像可以有多个颜色平面(B、G、R 通常用于 openCV 中的彩色图像),并且每个颜色平面取平均值每个颜色平面给你一个值,因此是标量。您的解决方案会为您提供图像蓝色部分的平均值(除非是灰度图像)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多