C++表示灰度图像线性拉伸不用OpenCV
时间: 2023-06-28 13:12:17 浏览: 111
用c++灰度图象显示
3星 · 编辑精心推荐
要实现灰度图像的线性拉伸,需要先读取图像像素值,然后计算像素值的最小值和最大值,接着将每个像素值根据最小值和最大值进行线性变换。
下面是一个示例代码,可以实现灰度图像的线性拉伸:
```c++
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
// 读取图像
ifstream infile("image.raw", ios::binary);
vector<unsigned char> image;
unsigned char value;
while(infile >> noskipws >> value)
{
image.push_back(value);
}
infile.close();
// 计算像素值的最小值和最大值
unsigned char min_value = 255, max_value = 0;
for(int i = 0; i < image.size(); i++)
{
if(image[i] < min_value) min_value = image[i];
if(image[i] > max_value) max_value = image[i];
}
// 线性变换
for(int i = 0; i < image.size(); i++)
{
image[i] = (image[i] - min_value) * 255 / (max_value - min_value);
}
// 将处理后的图像保存
ofstream outfile("image_stretched.raw", ios::binary);
for(int i = 0; i < image.size(); i++)
{
outfile << image[i];
}
outfile.close();
return 0;
}
```
其中,假设图像文件名为"image.raw",处理后的图像文件名为"image_stretched.raw"。这里使用了一个vector来存储像素值,读取图像和保存图像的过程都是通过文件流实现的。
阅读全文