c++读取图像像素值
时间: 2023-11-24 22:51:02 浏览: 69
以下是两种C++读取图像像素值的方法:
1. 指针方式,使用.ptr<uchar>(i,j)
```c++
Mat image;
int cols = image.cols;
int rows = image.rows;
for (int i=0; i<rows; i++){
for (int j=0; j<cols; j++){
uchar* image_ele = image.ptr<uchar>(i,j);
// 对于灰度图像,image_ele就是该像素的灰度值
// 对于彩色图像,image_ele[0]、image_ele[1]、image_ele[2]分别是该像素的BGR值
}
}
// 或者利用存储像素的指针首地址
Mat image;
int cols = image.cols;int rows = image.rows;
for (int i=0; i<rows; i++){
uchar* current_row = image.ptr<uchar>(i);
for (int j=0; j<cols; j++){
*current_row++ = 255 - *current_row;
}
}
```
2. 动态地址方式,使用.at<uchar>(i,j)
```c++
Mat image;
int cols = image.cols;
int rows = image.rows;
for (int i=0; i<rows; i++){
for (int j=0; j<cols; j++){
uchar image_ele = image.at<uchar>(i, j);
// 对于灰度图像,image_ele就是该像素的灰度值
// 对于彩色图像,image_ele[0]、image_ele[1]、image_ele[2]分别是该像素的BGR值
}
}
```