cv::imread函数读取黑白图像后,将像素值存入二维数组
时间: 2024-10-02 09:03:21 浏览: 36
imread函数-完整的Matlab学习资料
当你使用`cv::imread`函数读取一个灰度(黑白)图像后,它会直接返回一个单通道(monochrome)的`cv::Mat`对象,其中每个元素代表图像上对应像素点的灰度值。如果你想将其像素值存入一个二维数组,可以直接遍历这个矩阵并逐行复制数据。
以下是一个简单的示例,展示了如何操作:
```cpp
#include <opencv2/opencv.hpp>
#include <vector>
cv::Mat grayImage = cv::imread("path_to_grayscale_image.jpg", cv::IMREAD_GRAYSCALE); // 加载灰度图像
// 检查图像是否成功加载
if (grayImage.empty()) {
std::cout << "Failed to load grayscale image." << std::endl;
return;
}
std::vector<std::vector<unsigned char>> pixelArray(grayImage.rows, std::vector<unsigned char>(grayImage.cols));
for (int i = 0; i < grayImage.rows; ++i) {
for (int j = 0; j < grayImage.cols; ++j) {
pixelArray[i][j] = grayImage.at<uchar>(i, j);
}
}
// 现在,pixelArray就是存放了图像像素值的二维数组
```
在这个例子中,我们创建了一个与图像大小相匹配的`unsigned char`类型的二维向量`pixelArray`,然后使用两个嵌套循环遍历`grayImage`矩阵并将像素值复制到`pixelArray`中。
阅读全文