我正在调整使用cvMat的旧代码。我使用cvMat构造函数:
Mat A(B); // B is a cvMat
当我写A[i][j]
时,我收到错误no operator [] match these operands
。
为什么呢?有关信息:B
是单通道浮点矩阵(来自从csv文件读取的MLData
对象)。
答案 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()。