说明:
(1)坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线;Y轴为图像矩形左边的那条垂直线。
(2)在使用image.at(x1, x2)来访问图像中点的值的时候,x1并不是图片中对应点的x轴坐标,而是图片中对应点的y坐标。因此其访问的结果其实是访问image图像中的Point(x2, x1)点,即与image.at(Point(x2, x1))效果相同。
1. 遍历单通道图像
#include <iostream>
using namespace std;
#include <opencv2\opencv.hpp>
using namespace cv;
void main() {
Mat imgMat = imread("0_depth.png");
imshow("原图", imgMat);
cout << imgMat.channels() << endl;
Mat imgGray;
cvtColor(imgMat, imgGray, CV_RGB2GRAY);
cout << imgGray.channels() << endl;
int nRows = imgGray.rows;
int nCols = imgGray.cols * imgGray.channels();
cout << nRows << endl;
cout << nCols << endl;
for (int j = 0; j < nRows; j++) {
uchar* data = imgGray.ptr<uchar>(j);
for (int i = 0; i < nCols; i++) {
if (data[i]!=0) {
cout << data[i] << endl;
}
}
}
imshow("处理后的图像", imgGray);
waitKey(0);
system("pause");
}