数字图像处理学习笔记(1.0)---位图的读写、几何变换、傅里叶变换、直方图均衡
来源:互联网 发布:weebly建站 编辑:程序博客网 时间:2024/05/22 03:16
位图的读写
#include"bmp.h"#include<iostream>#include<cstring>#include<cstdio>using namespace std;Bitmap::Bitmap(){}Bitmap::~Bitmap(){if (dataBuf!=NULL)delete[] dataBuf;dataBuf = NULL;if (colorTable != NULL)delete[] colorTable;colorTable = NULL;}bool Bitmap::read(char* fileName){FILE* f = fopen(fileName, "rb");if (f == NULL)return false;if (dataBuf != NULL)//释放旧的图像数据内存和颜色表内存delete[] dataBuf;if (colorTable != NULL)delete[] colorTable;dataBuf = NULL;colorTable = NULL;fread(&fileHeader, sizeof(BITMAPFILEHEADER), 1, f);fread(&infoHeader, sizeof(BITMAPINFOHEADER), 1, f);width_p = infoHeader.biWidth;height_p = infoHeader.biHeight;bitCount = infoHeader.biBitCount;if (bitCount == 8){colorTable = new RGBQUAD[256];fread(colorTable, sizeof(RGBQUAD), 256, f);}dataBuf = new unsigned char[infoHeader.biSizeImage];fread(dataBuf, 1, infoHeader.biSizeImage, f);fclose(f);return 1;}bool Bitmap::write(char* fileName){FILE* f = fopen(fileName, "wb");if (f == NULL)return false;int colorTableSize = 0;if (bitCount == 8)colorTableSize = sizeof(RGBQUAD)* 256;int headerSize = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+colorTableSize;int lineSize = (width_p*bitCount / 8 + 3) / 4 * 4;int dataSize = lineSize*height_p;fileHeader.bfType = 0x4D42;fileHeader.bfSize = headerSize + dataSize;fileHeader.bfReserved1 = 0;fileHeader.bfOffBits = headerSize;infoHeader.biSize = 40;infoHeader.biWidth = width_p;infoHeader.biHeight = height_p;infoHeader.biPlanes = 1;infoHeader.biBitCount = bitCount;infoHeader.biCompression = BI_RGB;infoHeader.biSizeImage = dataSize;infoHeader.biXPelsPerMeter = 0;infoHeader.biYPelsPerMeter = 0;infoHeader.biClrUsed = 0;infoHeader.biClrImportant = 0;fwrite(&fileHeader, sizeof(BITMAPFILEHEADER), 1, f);fwrite(&infoHeader, sizeof(BITMAPINFOHEADER), 1, f);if (bitCount == 8){fwrite(colorTable, sizeof(RGBQUAD), 256, f);}fwrite(dataBuf, 1, dataSize, f);fclose(f);return true;}
测试:
#include"bmp.h"#include<iostream>using namespace std;int main(){char* fileName = "qianxun.bmp";Bitmap* bmp = new Bitmap();bmp->read(fileName);bmp->write("write.bmp");delete bmp;return 1;}
0 0
- 数字图像处理学习笔记(1.0)---位图的读写、几何变换、傅里叶变换、直方图均衡
- 数字图像处理学习笔记(1)---位图的读写、几何变换、傅里叶变换、直方图均衡
- 数字图像处理学习笔记(1.1)---位图的读写、几何变换、傅里叶变换、直方图均衡
- 数字图像处理学习笔记(1.2)---位图的读写、几何变换、傅里叶变换、直方图均衡
- 数字图像处理学习笔记(1.3)---位图的读写、几何变换、傅里叶变换、直方图均衡
- 【学习笔记】【数字图像处理】直方图均衡化
- 【数字图像处理】直方图均衡
- 数字图像处理-几何变换
- 【数字图像处理】图像的简单几何变换
- 《数字图像处理》学习笔记(五)--傅里叶变换
- (学习笔记4)BMP位图照片的几何变换
- 数字图像处理--直方图均衡化
- 数字图像处理-----直方图均衡化
- 数字图像处理之几何变换
- 数字图像的傅里叶变换笔记
- 数字图像处理之灰度图的直方图均衡化
- 数字图像处理之彩色图像的直方图均衡化
- (学习笔记6)BMP位图照片的灰度变换之直方图
- c语言片段一
- [leetcode 129] Sum Root to Leaf Numbers
- 凸优化和非凸优化
- MySQL存储过程和函数的区别
- 0xC0000005: 读取位置 0x00000001 时发生访问冲突
- 数字图像处理学习笔记(1.0)---位图的读写、几何变换、傅里叶变换、直方图均衡
- Service防止被Kill的方法整理
- Androd Toolbar的简单使用三
- 统计所有子串写到文件
- A-1SQL Server 数据库设计
- 0型文法、1型文法、2型文法、3型文法
- A-2SQL Server 数据库基础编程
- JavaScript控制输入框只能输入非负正整数
- 人生第一次写博客!