C++ 无法访问平均值

C++ 无法访问平均值,c++,opencv,C++,Opencv,我已经计算了图像中某个区域的平均值和标准偏差值。 守则: Mat img=imread("a.jpg"); Mat hsv1; Mat mean, stdev; cvtColor(img, hsv1, CV_BGR2HSV); cv::meanStdDev(hsv1, mean, stdev, superpixel_mask); cout << "mean: " << mean << endl << "standard deviation: " &

我已经计算了图像中某个区域的平均值和标准偏差值。 守则:

Mat img=imread("a.jpg");
Mat hsv1;
Mat mean, stdev;
cvtColor(img, hsv1, CV_BGR2HSV);
cv::meanStdDev(hsv1, mean, stdev, superpixel_mask);
cout << "mean: " << mean << endl << "standard deviation: " << stdev << endl;
我想访问这些号码。 我写的代码是:

float Mi = mean.at<float>(0,0);
cout << Mi << endl;
它给出了一个错误:

OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)si
ze.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channel
s()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3
) - 1))*4) & 15) == elemSize1()) in cv::Mat::at, file C:\OpenCV249\opencv\build\
include\opencv2/core/mat.hpp, line 537

这里的问题是,您试图使用at访问CV_64F垫

您可以通过以下方式解决此问题:

double Mi = mean.at<double>(0,0);

谷歌是你的朋友:为什么你认为他们被称为平均值。。。。大意思。“C:\OpenCV249\opencv\build\include\opencv2/core/mat.hpp,第537行,说明您必须使用最新版本。我对使用OpenCV 3.0编写的代码没有意见
double Mi = mean.at<double>(0,0);
Scalar mean, stdev;
cv::meanStdDev(hsv1, mean, stdev, superpixel_mask);
double Mi = mean[0];