没有operator []匹配这些操作数

时间:2015-01-06 16:44:14

标签: opencv

我正在调整使用cvMat的旧代码。我使用cvMat构造函数:

Mat A(B); // B is a cvMat

当我写A[i][j]时,我收到错误no operator [] match these operands

为什么呢?有关信息:B是单通道浮点矩阵(来自从csv文件读取的MLData对象)。

2 个答案:

答案 0 :(得分:1)

The documentation列出用于访问成员的at运算符。

A.at<int>(i,j); //Or whatever type you are storing.

答案 1 :(得分:1)

首先,您应该查看最基本的opencv tutorials

所以,如果你有一个3channel,bgr图像(最常见的情况),你必须像以下一样访问它:

Vec3b & pixel = A.at<Vec3b>(y,x); // we're in row,col world, here !
pixel = Vec3b(17,18,19);          // at() returns a reference, so you can *set* that, too.

1channel(灰度)版本看起来像这样:

uchar & pixel = A.at<uchar>(y,x); 

因为你提到浮动图像:

float & pixel = A.at<float>(y,x); 

您无法随意选择类型,您必须使用Mat内部的内容,因此请先尝试查询A.type()。