资源简介
图像处理-读取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语言进行数字图像处理
- basler相机图像采集和显示
- 二维码生成BMP
- 基于opencv漫水填充算法综合
- Visual+C++数字图像处理-谢凤英-源代码
- Bmp图像处理.zip
- VC++数字图像处理典型算法及实现
- EAN13条码生成(C语言+VS2010)[包含EA
- VC6.0 完整的图像处理程序 运用了大量
- VC图像处理-用Canny算子提取边缘
- 数字图像处理扑克牌识别程序
- 数字图像处理与机器视觉——Visual
- 基于leapmotion的HMM手势识别
- C++ 图像处理283241
- C++图像伪彩色处理源代码
- MFC画图板,可以画一些基本图形,如
- 图像处理方面学习的好MFC显示直方图
- Visual C++.NET图像处理编程源代码 陆宗
- 中值滤波_均值滤波c语言实现_工程文
- 直方图均衡化_c语言实现_源代码+实验
- (VC++ 数字图像处理典型算法及实现源
- 基于MFC的bmp图像处理268237
- c++指纹识别系统
- c语言实用数字图像处理
- 数字图像处理软件源代码三个资源集
- opencv图像处理MFC
- 数字图像处理实验源代码中值滤波,
- 计算BMP24位真彩色图像PSNR的C++小程序
- mfc打开并显示BMP图片
- 圆检测和方形检测图像处理
评论
共有 条评论