OPENCV 通过Mat访问每个像素



先上代码:


#include<iostream>

#include<opencv2/core/core.hpp>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;
int main()
{
    Mat diff=imread("/home/lisa/dataset/02m16001200/0.jpg");
    for(int i=0;i<diff.rows;i++)
    {
        for(int j=0;j<diff.cols;j++)
        {
              Vec3b bgrPixel=diff.at<Vec3b>(i,j);
              cout<<"rows=="<<i<<"cols=="<<j<<"  "<<bgrPixel<<endl;
        }
      }
    cv::waitKey(0);
    cout<<"hello world"<<endl;
    return 0;
}

Vec3b这种数据结构,存放了某个点的BGR三个通道的值,比如:这个代码输出如下:

rows==0cols==0 [0, 0, 0]

rows==0cols==1 [0, 0, 0]

rows==0cols==2 [0, 0, 0]

rows==0cols==3 [0, 0, 0]

rows==0cols==4 [0, 0, 0]

rows==0cols==5 [0, 0, 0]

rows==0cols==6 [0, 0, 0]

rows==0cols==7 [0, 0, 0]

rows==0cols==8 [0, 0, 0]

rows==0cols==9 [0, 0, 0]

rows==0cols==10 [0, 0, 0]

rows==0cols==11 [0, 0, 0]

rows==0cols==12 [0, 0, 0]

rows==0cols==13 [0, 0, 0]

rows==0cols==14 [0, 0, 0]

rows==0cols==15 [0, 0, 0]

rows==0cols==16 [0, 0, 0]

rows==0cols==17 [0, 0, 0]

rows==0cols==18 [0, 0, 0]

rows==0cols==19 [0, 0, 0]

rows==0cols==20 [0, 0, 0]

rows==0cols==21 [0, 0, 0]

rows==0cols==22 [1, 1, 1]

rows==0cols==23 [0, 0, 0]

rows==0cols==24 [0, 0, 0]

rows==0cols==25 [0, 0, 0]

rows==0cols==26 [0, 0, 0]

rows==0cols==27 [0, 0, 0]

rows==0cols==28 [1, 1, 1]

rows==0cols==29 [0, 0, 0]

rows==0cols==30 [0, 0, 0]

rows==0cols==31 [1, 1, 1]

rows==0cols==32 [0, 0, 0]

rows==0cols==33 [0, 0, 0]

rows==0cols==34 [0, 0, 0]

rows==0cols==35 [0, 0, 0]

rows==0cols==36 [0, 0, 0]

rows==0cols==37 [1, 1, 1]

rows==0cols==38 [0, 0, 0]

rows==0cols==39 [0, 0, 0]

rows==0cols==40 [0, 0, 0]

rows==0cols==41 [0, 0, 0]

rows==0cols==42 [0, 0, 0]

rows==0cols==43 [0, 0, 0]

rows==0cols==44 [0, 0, 0]

rows==0cols==45 [0, 0, 0]


若需要获取每个通道的像素点的值,可以如下:

for (int i = 0; i < image.cols; i++) {
    for (int j = 0; j < image.rows; j++) {
        Vec3b intensity = image.at<Vec3b>(j, i);
        for(int k = 0; k < image.channels(); k++) {
            uchar col = intensity.val[k]; 
        }   
    }
}



猜你喜欢

转载自blog.csdn.net/lisarer/article/details/78802782