如下:

#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;
}
``
C++读取一张图像可以使用opencv的imread对它进行灰度化、二值化不调用OPencv的函数然后保存图像可以使用imwrite代码

原文地址: https://www.cveoy.top/t/topic/cp7P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录