资源简介
图像处理-读取bmp图像均值滤波-C++
代码片段和文件信息
#include
#include “BmpRot.h“
#include “stdlib.h“
#include “math.h“
#include
#define PI 3.14159//圆周率宏定义
#define LENGTH_NAME_BMP 30//bmp图片文件名的最大长度
using namespace std;
//变量定义
BITMAPFILEHEADER strHead;
RGBQUAD strPla[256];//256色调色板
BITMAPINFOHEADER strInfo;
//显示位图文件头信息
void showBmpHead(BITMAPFILEHEADER pBmpHead) {
cout << “位图文件头:“ << endl;
cout << “文件大小:“ << pBmpHead.bfSize << endl;
cout << “保留字_1:“ << pBmpHead.bfReserved1 << endl;
cout << “保留字_2:“ << pBmpHead.bfReserved2 << endl;
cout << “实际位图数据的偏移字节数:“ << pBmpHead.bfOffBits << endl << endl;
}
void showBmpInforHead(tagBITMAPINFOHEADER pBmpInforHead) {
cout << “位图信息头:“ << endl;
cout << “结构体的长度:“ << pBmpInforHead.biSize << endl;
cout << “位图宽:“ << pBmpInforHead.biWidth << endl;
cout << “位图高:“ << pBmpInforHead.biHeight << endl;
cout << “biPlanes平面数:“ << pBmpInforHead.biPlanes << endl;
cout << “biBitCount采用颜色位数:“ << pBmpInforHead.biBitCount << endl;
cout << “压缩方式:“ << pBmpInforHead.biCompression << endl;
cout << “biSizeImage实际位图数据占用的字节数:“ << pBmpInforHead.biSizeImage << endl;
cout << “X方向分辨率:“ << pBmpInforHead.biXPelsPerMeter << endl;
cout << “Y方向分辨率:“ << pBmpInforHead.biYPelsPerMeter << endl;
cout << “使用的颜色数:“ << pBmpInforHead.biClrUsed << endl;
cout << “重要颜色数:“ << pBmpInforHead.biClrImportant << endl;
}
int main() {
char strFile[LENGTH_NAME_BMP];//bmp文件名
IMAGEDATA *imagedata = NULL;//动态分配存储原图片的像素信息的二维数组
//IMAGEDATA *imagedataRot = NULL;//动态分配存储旋转后的图片的像素信息的二维数组
int width height;//图片的宽度和高度
cout << “请输入所要读取的文件名:“ << endl;
cin >> strFile;
FILE *fpi *fpw;
fpi = fopen(strFile “rb“);
if (fpi != NULL) {
//先读取文件类型
WORD bfType;
fread(&bfType 1 sizeof(WORD) fpi);
if (0x4d42 != bfType)
{
cout << “the file is not a bmp file!“ << endl;
return NULL;
}
//读取bmp文件的文件头和信息头
fread(&strHead 1 sizeof(tagBITMAPFILEHEADER) fpi);
showBmpHead(strHead);//显示文件头
fread(&strInfo 1 sizeof(tagBITMAPINFOHEADER) fpi);
showBmpInforHead(strInfo);//显示文件信息头
//读取调色板
for (unsigned int nCounti = 0; nCounti {
//存储的时候,一般去掉保留字rgbReserved
fread((char *)&strPla[nCounti].rgbBlue 1 sizeof(BYTE) fpi);
fread((char *)&strPla[nCounti].rgbGreen 1 sizeof(BYTE) fpi);
fread((char *)&strPla[nCounti].rgbRed 1 sizeof(BYTE) fpi);
cout << “strPla[nCounti].rgbBlue“ << strPla[nCounti].rgbBlue << endl;
cout << “strPla[nCounti].rgbGreen“ << strPla[nCounti].rgbGreen << endl;
cout << “strPla[nCounti].rgbRed“ << strPla[nCounti].rgbRed << endl;
}
width = strInfo.biWidth;
height = strInfo.biHeight;
imagedata = (IMAGEDATA*)malloc(width * height * sizeof(IMAGEDATA));
//imagedataRot = (IMAGEDATA*)malloc(2 * width * 2 * height * sizeof(IMAGEDATA));
//初始化原始图片的像素数组
for (int i = 0; i < height; ++i)
{
for (int j = 0; j < width; ++j)
{
(*(imagedata + i * width + j)).blue
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10186 2016-12-04 00:42 back.cpp
文件 9485 2016-12-19 13:23 BmpRot.cpp
文件 1283 2016-12-03 19:59 BmpRot.h
文件 786486 2016-12-03 19:38 lena.bmp
- 上一篇:FTP断点续传程序
- 下一篇:数据结构 走迷宫大作业 c语言完整代码
相关资源
- 图像内容识别缩放 源代码 C++
- c++读写BMP JPG 和png 的图像文件linux
- c语言 bmp图片显示
- 图像处理 逆滤波处理 C/C++语言实现
- 数字图像处理原理与实践 基于Visua
- bmp图片灰度化二值化
- 数字图像处理 邻域平均法 C语言
- C语言写的简单均值滤波算法
- VC图像处理系列之一——图像读写篇
- 边界跟踪算法的实现,图像处理 c++
- raw格式转换为bmp格式包括代码,lena
- 读bmp图像像素存txt并输出bmp图像
- 功能非常全的数字图像处理程序含源
- emgucv&opencv图像处理函数说明
- 中值滤波、均值滤波和高斯滤波代码
- VC6.0打开BMP位图程序白色彩色皆可
- 24位RGB数据保存为BMP图片
- OpenCV+C++图像处理项目14个
- 计算图像的平均灰度值
- Visual C++数字图像处理技术详解 pdf+源
- bmp280的读取C语言
- 局部均值滤波(local statistics neibor f
- vs2010 MFC tabctrl控件重载, 实现标签加
- dsp图像处理二维傅里叶变换代码实现
- 图像处理 验证码识别C++
- 11个常用OpenCV+C++图像处理
- 图像处理 FFT快速傅里叶变换 C代码
- 基于linux下的图像缩小 c语言
- C语言读取BMP文件
- c语言均值滤波源程序
评论
共有 条评论