C++读取一张图像可以使用opencv的imread对它进行灰度化、二值化不调用OPencv的函数然后保存图像可以使用imwrite代码
如下:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
// 读取图像,假设图像名为test.jpg
ifstream fin("test.jpg", ios::binary);
fin.seekg(0, ios::end);
int size = fin.tellg();
char* buffer = new char[size];
fin.seekg(0, ios::beg);
fin.read(buffer, size);
fin.close();
// 灰度化
int width = 640; // 假设图像宽度为640
int height = size / width; // 计算图像高度
for (int i = 0; i < size; i += 3) {
int gray = (buffer[i] + buffer[i + 1] + buffer[i + 2]) / 3;
buffer[i] = buffer[i + 1] = buffer[i + 2] = gray;
}
// 二值化
int threshold = 128; // 假设二值化阈值为128
for (int i = 0; i < size; i++) {
buffer[i] = buffer[i] < threshold ? 0 : 255;
}
// 保存图像,假设保存为binary.bmp
ofstream fout("binary.bmp", ios::binary);
fout.write(buffer, size);
fout.close();
delete[] buffer;
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/cp7P 著作权归作者所有。请勿转载和采集!