OPENCV 通过Mat访问每个像素
2017-12-14 15:05
369 查看
先上代码:
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];
}
}
}
#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];
}
}
}
相关文章推荐
- 【OpenCV】访问Mat中每个像素的值(新)
- 【OpenCV】访问Mat中每个像素的值
- 【OpenCV】访问Mat图像中每个像素的值
- 【OpenCV】访问Mat图像中每个像素的值
- 【OpenCV】访问Mat图像中每个像素的值
- 【OpenCV】访问Mat图像中每个像素的值
- 【OpenCV】访问Mat中每个像素的值(新)
- 【OpenCV】访问Mat图像中每个像素的值
- 【OpenCV】访问Mat图像中每个像素的值
- 【OpenCV】访问Mat中每个像素的值
- 【OpenCV】访问Mat图像中每个像素的值
- 【OpenCV】访问Mat中每个像素的值(新)
- 学习openCV之Mat类型访问每个像素
- 【OpenCV、Cximage、Mat】访问图像中每个像素的值
- OpenCV访问Mat图像中每个像素的值
- 【OpenCV】访问Mat图像中每个像素的值 (II)
- 【OpenCV】访问Mat图像中每个像素的值
- 【OpenCV】访问Mat中每个像素的值(新)(III)
- opencv笔记7----Mat访问每个像素
- 【OpenCV】访问Mat图像中每个像素的值