OpenCV中Mat像素存储及坐标系如下图所示:
无标题.png假如有三通道图像变量Mat a,两种mat数据的访问方式可以遍历图像,分别为:
1:a.<vecb>at(row,col);
for (int i=0; i<ROW ; i++)
{
for (int j=0; j<COL ; j++)
{
img1.at<vec3b>(i,j)[0]= 3.2f; // B 通道
img1.at<vec3b>(i,j)[1]= 3.2f; // G 通道
img1.at<vec3b>(i,j)[2]= 3.2f; // R 通道
}
}
2:标准的ptr访问方式,a.<type>ptr(i)[j]
for (int i=0; i<ROW ; i++)
{
float* pData1=a.ptr<float>(i);
for (int j=0; j<COL ; j++)
{
pData1[j] = 3.2f;
}
}
由上可以看出,Mat访问下标的顺序与坐标(x,y)相反,即Mat按照(y,x)的方式范文和遍历Mat数据变量,halcon图像及区域、xld变量也是这么存储的。
参考
opencv Mat数据的三种标准访问方式:https://www.cnblogs.com/phillips/p/4484717.html
opencv 图像row、col坐标对应关系:https://blog.csdn.net/sc944201630/article/details/82222909
网友评论