您的位置:首页 > 运维架构

Opencv2 中 Mat 关于图像像素的操作

2013-04-24 11:00 381 查看
有三种方法获取图像中某点(i,j)的像素:

1、 M.at<float>(i, j)

2、使用 ptr 指针 M.ptr<float>( i )[ j ]

3、使用 data指针
M.data

对于 at 指针:

Mat img = imread("lena.jpg");

对于单通道,有:

for(int i=0;i<img2.rows;i++)

{

for(int j=0;j<img2.cols;j++)

{

uchar &value = img2.at<uchar>(i,j);

value = 255;

// img2.at<uchar>(i,j)=255; //取得像素或者赋值

}

}

对于三通道有:

for(int i=0;i<img2.rows;i++)

{

for(int j=0;j<img2.cols;j++)

{

for(int n=0;n<img2.channels();n++)

{

img2.at<uchar>(i,j*img2.channels()+n)=255; //取得像素或者赋值

}

}

}

// 或者是 img2.at<uchar>(i,j) [0] =255; img2.at<uchar>(i,j) [1] =255; ...........

对于 ptr 指针:

对于单通道,有:

Mat img = imread("lena.jpg");

for(int i=0;i<img2.rows;i++)

{

const uchar * output = img.ptr<const uchar> (i);

for(int j=0;j<img2.cols;j++)

{

*output ++ =255; //取得像素或者赋值

}

}

对于三通道有:

Mat img = imread("lena.jpg");

for(int i=0;i<img2.rows;i++)

{

const uchar * output = img.ptr<const uchr> (i);

for(int j=0;j<img2.cols;j++)

{

for(int k=0;n<img.channels();k++)

{

*output [j* img.channels() + k] = 255; //取得像素或者赋值

}

}

}

对于 data 指针:

下次在讲
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: