【图像处理】关于Mat访问

opencv中图像坐标系

这里写图片描述

  • 行列与坐标系对应关系
    Y
    X
    在Mat类型变量访问时下标是反着写的,即:按照(y, x)的关系形式访问

  • Mat深拷贝

Mat data=img.clone();
  • 用于将uchar*数据转化为Mat型数据,单通道
Mat uchar2mat(int height,int width,uchar* ch)
{
    Mat ma(height, width, CV_32FC1);
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            ma.at<float>(i, j) = (float)ch[i*width + j];
        }
    }
    return ma;
}
  • Mat数据访问方法
    Mat ma = imread("1.png", 0);
    for (int i = 0; i < ma.size().height-1; i++)
    {
        uchar* data = ma.ptr<uchar>(i);  //像素的指针
        for (int j = 0; j < ma.size().width-1; j++)
        {
            cout << int(data[j])<<endl;
        }
    }
  • 访问多通道mat方法
for (int i=0; i<height; i++)  
{  
    for (int j=0; j<width; j++)  
    {  
        ma.at<vec3b>(i,j)[0]= 3.2f;  // B 通道
        ma.at<vec3b>(i,j)[1]= 3.2f;  // G 通道
        ma.at<vec3b>(i,j)[2]= 3.2f;  // R 通道
    }  
}

Ref

OpenCV 行列值与坐标的对应关系

猜你喜欢

转载自blog.csdn.net/qq_28193895/article/details/80910019