bmp格式图的解析

article/2025/8/28 10:26:39

文章目录

前言

一、bmp格式图的特点

二、bmp格式图的解析

总结


前言

在图像处理中经常会遇到BMP格式图的解析问题,本文简单介绍了bmp格式图的解析方式,并附上相应的C代码。


一、bmp格式图的特点

bmp图通常由图片的头文件信息和像素数据组成,如图1所示,是bmp图的部分数据,

图1 bmp示例图数据

图2 bmp的大小以及分辨率

 其中,424D,十进制为66和77是BM字符的ascii值,表示是BMP文件;

2~5字节表示整个BMP文件的大小,0X00031866即202854个字节,与图2的bmp图大小相同;

6~9字节是保留数据段,一般是0;

10~13字节表示图像存储的位置,0X00000036,即第54个字节;

14~17字节表示位图数据头,0X00000028,即40;

18~21字节表示图像宽度,0X00000104,即260;

22~25表示图像高度,0X00000104,即260;

26~27表示色彩平面数,必须为1,即0X0001;

28~29表示每个像素存储的位数,0X0018,即24;

30~33表示字节压缩方式,0表示不压缩;

34~37表示原始位图数据的大小,0X00031830;

38~41表示横向分辨率,0X00000B13;

42~45表示纵向分辨率,0X00000B13;

46~49表示调色板颜色数,0X00000000;

50~53表示重要颜色数,0X01000000;

从54字节开始为像素数据。


二、bmp格式图的解析

解析bmp图中RGB三通道数据的C代码如下所示,首先读出文件头信息,然后读出像素数据。bmp的像素数据是从下往上从左往右存储的,即读出的第一个数据是左下角的像素值,最后一个数据是右上角的像素值。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>struct myBITMAPFILEHEADER
{unsigned int uiSize;unsigned int uiReserved;unsigned int uiOffBits;unsigned int uiSize1;unsigned int uiWidth;unsigned int uiHeight;unsigned short usPlanes;unsigned short usBitcount;unsigned int uiCompression;unsigned int uiSizeImage;unsigned int uiXPelsPerMeter;unsigned int uiYPelsPerMeter;unsigned int uiClrUsed;unsigned int uiClrImportant;
};int main()
{int iWidth,iHeight;FILE *pf;myBITMAPFILEHEADER fileheader;//存放bmp图头文件信息的结构体char acBmpName[256];sprintf(acBmpName,"1.bmp");pf=fopen(acBmpName,"rb");//此处如果以r打开可能会导致数据读不完整if(NULL==pf){perror("fopen");return -1;}unsigned char ucTmp1,ucTmp2;ucTmp1=fgetc(pf);ucTmp2=fgetc(pf);if((ucTmp1!='B')||(ucTmp2!='M')){printf("The file is not a bmp file!");return -1;}//读取文件头信息fread(&fileheader,sizeof(fileheader),1,pf);iWidth=fileheader.uiWidth;iHeight=fileheader.uiHeight;unsigned char *pusData=(unsigned char *)malloc(iHeight*iWidth*sizeof(unsigned char)*3);unsigned char *pusR=(unsigned char *)malloc(iHeight*iWidth*sizeof(unsigned char));unsigned char *pusG=(unsigned char *)malloc(iHeight*iWidth*sizeof(unsigned char));unsigned char *pusB=(unsigned char *)malloc(iHeight*iWidth*sizeof(unsigned char));memset(pusData,0,iHeight*iWidth*sizeof(unsigned char)*3);memset(pusR,0,iHeight*iWidth*sizeof(unsigned char));memset(pusG,0,iHeight*iWidth*sizeof(unsigned char));memset(pusB,0,iHeight*iWidth*sizeof(unsigned char));//读取像素数据fread(pusData,iHeight*iWidth*sizeof(unsigned char)*3,1,pf);fclose(pf);pf=NULL;//解析出R、G和B通道int i,j;for(i=0;i<iHeight;i++){for(j=0;j<iWidth;j++){pusR[iWidth*(iHeight-i-1)+j]=pusData[i*iWidth*3+j*3+2];pusG[iWidth*(iHeight-i-1)+j]=pusData[i*iWidth*3+j*3+1];pusB[iWidth*(iHeight-i-1)+j]=pusData[i*iWidth*3+j*3+0];}}free(pusData);pusData=NULL;free(pusR);pusR=NULL;free(pusG);pusG=NULL;free(pusB);pusB=NULL;return 0;}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了bmp格式图的解析方式,后续还会继续介绍bmp图的存储方式。


http://chatgpt.dhexx.cn/article/SYTRO2M6.shtml

相关文章

R语言与多元线性回归分析计算实例

6.3.7 计算实例 例 6.9 某大型牙膏制造企业为了更好地拓展产品市场&#xff0c;有效地管理库存&#xff0c;公司董事会要求销售部门根据市场调查&#xff0c;找出公司生产的牙膏销售量与销售价格&#xff0c;广告投入等之间的关系&#xff0c;从而预测出在不同价格和广告费用下…

多元线性回归检验

多元线性回归模型通常用来研究一个应变量依赖多个自变量的变化关系&#xff0c;如果二者的以来关系可以用线性形式来刻画&#xff0c;则可以建立多元线性模型来进行分析。 1.t检验 t检验是对单个变量系数的显著性检验&#xff0c;一般看p值&#xff1b; 如果p值小于0.05表示该…

[DataAnalysis]多元线性回归深入浅出-案例+模型假设+参数估计方法+模型评判方法+变量选择+多重共线性问题

一、案例介绍 1、目的&#xff1a;利用上市公司当年的公开财务指标预测来年盈利情况最重要的投资人决策依据。 2、数据来源&#xff1a;随机抽取深市和沪市2002和2003年的500个上市公司样本预测来年的净资产收益率。 3、解释变量包括&#xff1a;资产周转率、当年净资产收益…

基于spss的多元回归分析模型

还是数学建模中的一个小问题&#xff0c;具体概念分析在百度上的大佬说的已经足够详细&#xff0c;在此不再赘述。 链接: 多元回归分析. 我主要根据实例讲解如何通过spss进行建模&#xff0c;并进行模型参数的分析和验证。 打开spss&#xff08;如果遇到打不开的情况&#x…

多元线性回归分析预测法概述

在市场的经济活动中&#xff0c;经常会遇到某一市场现象的发展和变化取决于几个影响因素的情况&#xff0c;也就是一个因变量和几个自变量有依存关系的情况。而且有时几个影响因素主次难以区分&#xff0c;或者有的因素虽属次要&#xff0c;但也不能略去其作用。例如&#xff0…

用R进行多元线性回归分析建模

概念&#xff1a;多元回归分析预测法&#xff0c;是指通过对两个或两个以上的自变量与一个因变量的相关分析&#xff0c;建立预测模型进行预测的方法。当自变量与因变量之间存在线性关系时&#xff0c;称为多元线性回归分析。 下面我就举几个例子来说明一下 例一&#xff1a;谋…

基于Python的多元线性回归分析

一、多元线性回归分析&#xff08;Multiple regression&#xff09; 1.与简单线性回归相比较&#xff0c;具有多个自变量x 2.多元回归模型 其中是误差值&#xff0c;与简单线性回归分析中的要求特点相一致。其余的系数和截距为参数。 3.多元回归方程 4.估计多元回归方程(点估…

多元线性回归--案例分析及python实践

回归分析--多元回归 介绍一下多元回归分析中的统计量 总观测值总自变量自由度&#xff1a;回归自由度 &#xff0c;残差自由度 SST总平方和 SSR回归平方和 SSE残差平方和 MSR均方回归 MSE均方残差 判定…

回归分析:多元线性回归模型 白话解析与案例实现

文章目录 线性学习多元线性回归模型多元线性回归模型的python实现 线性学习 回归分析是研究自变量x与因变量y的关系的方法。 上一节我们介绍了一元线性回归&#xff0c;经验公式为&#xff1a; $ \hat{y}\hat{\beta}1 x\hat{\beta}0 $ 在实际生活中&#xff0c;我们要研究的…

多元统计分析——多元线性回归

1. 经典的线性回归分析与交叉验证 examDict{ 学习时 :[0.50, 0.75, 1.00, 1.25,1.50,1.75, 1.75,2.00, 2.25,2.50, 2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50], 分:[10,22,13 ,43,20,22,33,50,62 , 48,55,75,62,73,81,76,64,82,90,93]} examDf pd.DataFrame(examDi…

spss进行多元线性回归并分析表格(转载)

1.如何使用spss进行多元线性回归。 2.分析生成结果&#xff0c;并判断回归是否可行。 一、使用spss进行多元线性回归&#xff1a; 1.输入数据 二、表格结果分析&#xff1a; R方是检验回归是否成功的重要要素之一&#xff0c;DW是残差独立性检验&#xff0c;衡量标准如下&…

数据分析方法--回归分析方法((SPSS建模:多元线性回归案例)

文章目录 回归定义最常用回归方法一、线性回归(Linear Regression)二、逻辑回归(Logistic Regression)三、多项式回归(Polynomial Regression)四、逐步回归(Stepwise Regression)五、岭回归(Ridge Regression)六、套索回归(Lasso Regression)七、回归(ElasticNet) 如何正确选择…

线性回归 - 多元线性回归案例 - 分析步骤、输出结果详解、与Python的结果对比 -(SPSS建模)

现在用 Python 写线性回归的博客都快烂大街了&#xff0c;为什么还要用 SPSS 做线性回归呢&#xff1f;这就来说说 SPSS 存在的原因吧。 SPSS 是一个很强大的软件&#xff0c;不用编程&#xff0c;不用调参&#xff0c;点巴两下就出结果了&#xff0c;而且出来的大多是你想要的…

SPSS--回归-多元线性回归模型案例解析!(一)

SPSS--回归-多元线性回归模型案例解析&#xff01;(一&#xff09; 多元线性回归&#xff0c;主要是研究一个因变量与多个自变量之间的相关关系&#xff0c;跟一元回归原理差不多&#xff0c;区别在于影响因素&#xff08;自变量&#xff09;更多些而已&#xff0c;例如&#x…

多元回归分析(线性回归)

多元线性回归分析 一、回归的基本理解&#xff08;1&#xff09;回归的基本任务&#xff08;2&#xff09;回归里的关键词&#xff08;3&#xff09;回归里的数据类型&#xff08;4&#xff09;回归方程中的系数解释&#xff08;5&#xff09;扰动项要满足的条件&#xff08;1&…

多元线性回归分析详细介绍

一文搞懂——多元线性回归分析 回归分析定义回归的使命回归分析的分类数据的分类数据的收集 线性回归对于线性的理解回归系数的解释核心解释变量和控制变量四类模型回归系数的解释特殊的自变量&#xff1a;虚拟变量X含有交互项的自变量 回归实例题目Stata解决第一步&#xff1a…

多元线性回归分析示例

GLM模型应用于脑功能影像分析时&#xff0c;在某个因素影响下&#xff0c;由beta图&#xff0c;经过t检验得到脑区显著激活的区域。应用于其他地方也可加深我们对于模型的理解。 clc,clear; X[ 136.5 215136.5 250136.5 180138.5 2501…

【课程设计】计算机组成与系统结构

计算机组成与系统结构课程设计(2020.12) 保姆式教程 目录 计算机组成与系统结构课程设计(2020.12)一、本课程设计的性质、目的、任务二、本课程设计的基本理论三、课程设计的主要内容四、微程序流程图&#xff08;树形图&#xff09;五、模型机微指令表六、机器指令程序的说明…

计算机组成与系统结构课程设计

课程设计题目 综合运用所学计算机原理知识&#xff0c;设计并实现具有以下16条指令的指令集结构的模型计算机&#xff1a; 编号 助记符 机器指令码 说明 0 SUB Rd,Rs 0000 RdRs Rd-Rs→Rd 1 ADD Rd,Rs 0001 RdRs RdRs→Rd 2 AND Rd,Rs 0010 RdRs Rd&Rs→Rd &#xff08;Rd和…

计算机毕业设计、计算机课程设计怎么做?计算机设计1900套来帮你!

计算机毕业设计、计算机课程设计怎么做&#xff1f;计算机设计1900套来帮你&#xff01; 人生做什么事都有套路&#xff0c;大学毕业设计、课程设计通常比较简单&#xff0c;大多数都是找个项目做参考&#xff0c;有的人随便抄一抄糊弄一下&#xff0c;只要查重&#xff0c;格…