在OpenCV中访问数组的元素

时间:2013-06-08 21:45:11

标签: c++ arrays opencv

我试图获取数组中元素的值,以便在if语句中使用它,但遗憾的是以下代码对我不起作用。 cout的{​​{1}}与数组C的第一个元素不匹配。我是OpenCV的新手,所以感谢任何帮助。

comp

2 个答案:

答案 0 :(得分:1)

您的Mat_<double>实例在内部存储double。当你这样做时:

float comp = C.at<float>(0,0);

您正在尝试使用形成double的一些位,并将它们解释为float。浮点表示意味着double的一半位不会转换为有意义的float(假设浮点的大小是double的一半,这很常见)。因此,请改为呼叫C.at<double>

答案 1 :(得分:0)

实际上,如果您使用cv::Mat_<_Tp>的模板版本,则可以Mat_<_Tp>::operator ()(int y, int x)

访问像素值
cv::Mat_<double> M(3, 3);
for (int i = 0;i < 3; ++i) {
  for (int j = 0;j < 3; ++j) {
    std::cout<<M(i, j)<<std::endl;
  }
}

以便稍后如果将模板参数从double更改为float,则无需修改每个at()