无法访问平均值
Cannot Access Mean Values
我已经计算了图像中一个区域的均值和标准差值。代码:
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;
输出为:
mean: [150.8399251737039;
103.6980224478888;
226.161411010155]
standard deviation: [23.98981564590477;
46.73491195049309;
34.41166394765997]
我想访问这些数字。我写了下面的代码:
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:OpenCV249opencvbuild
includeopencv2/core/mat.hpp, line 537
这里的问题是您试图使用at<float>
访问CV_64F
Mat
。
你可以这样解决:
double Mi = mean.at<double>(0,0);
或者声明Scalar
而不是Mat
:
Scalar mean, stdev;
cv::meanStdDev(hsv1, mean, stdev, superpixel_mask);
double Mi = mean[0];
相关文章:
- 通过方法访问结构
- 计算数组c++的平均值
- 使用不带参数的函数访问结构元素
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 用于访问容器<T>数据成员的正确 API
- 访问者访问变体并返回不同类型时出错
- 尝试通过多个向量访问变量时,向量下标超出范围
- 无法访问嵌套类.类的使用无效
- 写入位置0x0000000C时发生访问冲突
- 我们可以访问一个不存在的联盟的成员吗
- C++从另一个类访问公共静态向量的正确方法是什么
- 我的简单if-else语句是如何无法访问的代码
- 从C++dll访问C#中的一行主要参数
- 概念TS检查忽略私有访问修饰符
- 访问被拒绝后,c++中的故障保护代码
- 在c++中访问int到类对象的映射时出错
- 我想访问std::unique_ptr中的一个特定元素
- 为什么示例代码访问IUnknown中已删除的内存
- C++:无法访问声明的受保护成员
- 无法访问平均值