Mat img(1000,1000,CV_32F);
float* pData=(float*)img.data;
for (int i=0;i<img.rows;i++)
{//这个假设数据连续存储,不怎么对
for (int j=0;j<img.cols;j++)
{
*(pData)=5*i+4*j;
pData++;
}
}
for (int i=0;i<img.rows;i++)
{//和上面的差不多
for (int j=0;j<img.cols;j++)
{
((float*)img.data)[i*img.rows+j]=5*i+4*j;
}
}
for (int i=0;i<img.rows;i++)
{//这个不错,用ptr带[],在下面可以用数组表示
pData=img.ptr<float>(i);
for (int j=0;j<img.cols;j++)
{
pData[j]=5*i+4*j;
}
}
for (int i=0;i<img.rows;i++)
{//前面的另一种形式
for (int j=0;j<img.cols;j++)
{
img.ptr<float>(i)[j]=5*i+4*j;
}
}
for (int i=0;i<img.rows;i++)
{//这个也不错,用at,这个很前面的都有越界检测
for (int j=0;j<img.cols;j++)
{
img.at<float>(i,j)=5*i+4*j;
}
}
注意这里只能用float,如果用double会报错!