#include<iostream>
#include<windows.h>
#include<stdio.h>
using namespace std;
#include<iostream>
#include<windows.h>
#include<stdio.h>using namespace std;
int main()
{
char *buf;
char *p;
//文件指针
FILE* fp;
BITMAPFILEHEADER bf;
BITMAPINFOHEADER bi;
int w, h;
int bitSize;
int gray[256] = { 0 };
//以二进制方式打开图像
fopen_s(&fp, "F:\\Demo\\1.bmp", "rb");
if (fp == 0)
{
cout << "Open image failed!" << endl;
exit(0);
}
//获取图像数据总长度
fread(&bf, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bi, sizeof(BITMAPINFOHEADER), 1, fp);
w = bi.biWidth;
h = bi.biHeight;
bitSize = bi.biSizeImage;
buf = (char*)malloc(w*h * 1);
fseek(fp, long(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)), 0);
fread(buf, 1, w*h * 1, fp);
p = buf;
for (int i = 0; i < w; i++)
{
for (int j = 0; j < h; j++)
{
gray[p[i*w + j]]++;
}
}
for (int k = 0; k < 256; k++)
{
cout << "value " << k << "=" << gray[k] << endl;
}
fclose(fp);
free(buf);
}int main()
{
char *buf;
char *p;
//文件指针
FILE* fp;
BITMAPFILEHEADER bf;
BITMAPINFOHEADER bi;
int w, h;
int bitSize;
int gray[256] = { 0 };
//以二进制方式打开图像
fopen_s(&fp, "F:\\Demo\\1.bmp", "rb");
if (fp == 0)
{
cout << "Open image failed!" << endl;
exit(0);
}
//获取图像数据总长度
fread(&bf, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bi, sizeof(BITMAPINFOHEADER), 1, fp);
w = bi.biWidth;
h = bi.biHeight;
bitSize = bi.biSizeImage;
buf = (char*)malloc(w*h * 1);
fseek(fp, long(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)), 0);
fread(buf, 1, w*h * 1, fp);
p = buf;
for (int i = 0; i < w; i++)
{
for (int j = 0; j < h; j++)
{
gray[p[i*w + j]]++;
}
}
for (int k = 0; k < 256; k++)
{
cout << "value " << k << "=" << gray[k] << endl;
}
fclose(fp);
free(buf);
}