菜鸟基础提问:如何在c++中读取位图?(恳求详细解答)

pf220998 2009-02-20 02:09:53
各位老鸟,我学了一学期的c++,对其很感兴趣,就想在图像处理上研究一下,没想到在第一步就卡住了
我想在c++中读取一个本地的位图,但无论查电子书还是网上搜索都让我很困惑,希望大家能稍加详细地点拨一下哈~~
从网上和书上我知道步骤,也下载了一些代码,但这些代码不是编译不通过就是MFC,都快疯了……
我知道步骤是:
打开文件
读入位图文件头,位图信息头
根据信息确定宽度、高度、颜色位数、是否行翻转,是否使用调色板
计算行长(考虑位图的字节对齐问题)
申请内存用于保存像素数据
从文件中读出像素数据
每一个像素点显示,得到整个位图图像。

但具体实在做不出来,麻烦各位老鸟给个详细的能编译通过的代码让我看看,我现在其实就是原理什么都懂,但就是想实际看看具体的程序到底是如何读取一个本地位图的~~~

喜欢编程,喜欢CSDN,希望一起进步!拜谢……^_^
...全文
581 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwqxin 2009-03-28
  • 打赏
  • 举报
回复
其实直接用LoadImage的话,会比自己动手差么.....

http://dev.yesky.com/164/2291664.shtml

henrythoreau 2009-03-28
  • 打赏
  • 举报
回复
为什么不用MFC呢
好多书上有源码啊,而且方法多样
封装好的CDib或CImage类很容易找到的
xiaowen2456 2009-03-26
  • 打赏
  • 举报
回复
我急需啊,谢谢给我一份啊qicai520@163.com
glacier3d 2009-03-25
  • 打赏
  • 举报
回复
最简单的loadimage API直接搞定。
unusual001 2009-03-23
  • 打赏
  • 举报
回复
异常感谢,lrbv@163.com
胖多多是我 2009-03-22
  • 打赏
  • 举报
回复
非常感谢!~~
north55@126.com
pf220998 2009-02-22
  • 打赏
  • 举报
回复
非常感谢!~~
xiangmin.liang@gmail.com
mxw0922 2009-02-20
  • 打赏
  • 举报
回复
把邮箱给我,发个关于图像处理的源程序给你参考一下,里面有很多图像处理算法!
还在查 2009-02-20
  • 打赏
  • 举报
回复
C++控制台能输出位图?
pf220998 2009-02-20
  • 打赏
  • 举报
回复
这是我找到的一个关于位图读取和简单处理的源码,大家看看,是不是这个样子

#include<stdio.h>
#include<math.h>
#include<iostream>
#include<bitset>
using namespace std;

void main(){

FILE *fp,*fq,*ft;
int i;
int k=132; //位图字节数 ,t[132]={0}
char head[62]={0},body[133]={0};
bitset <8> b;

//读实际位图bit数据
fp=fopen("c:/temp/bmp/BMP-1.bmp","rb");
for(i=0;i<62;i++) //读位图头的字节
head[i]=fgetc(fp);
for(i=0;i<133;i++) //读位图图字节
body[i]=fgetc(fp);

//实际位图bit输出到屏幕
cout<<"实际位图bit输出到屏幕"<<endl;
for(i=1;i<=32;i++){
k=k-4;
for(int j=0;j<4;j++){
bitset<8> b(body[k+j]);
cout<<b;
}
cout<<endl;
}cout<<endl<<"修改后输出到屏幕:"<<endl;
//实际位图bit存入磁盘c:/temp/bmp/bmp-1-1.bmp
fq=fopen("c:/temp/bmp/bmp-1-1.bmp","w");
for(i=0;i<62;i++) fputc(head[i],fq);
for(i=0;i<132;i++)fputc(body[i],fq);
fputc(body[132],fq);

//位图数据处理,将每个字节末位置'0'
for(i=0;i<132;i++){
unsigned int t=body[i];
t=t&254;
char c=t;
body[i]=c;
}
//修改后位图bit输出到屏幕;
for(k=132,i=1;i<=32;i++){
k=k-4;
for(int j=0;j<4;j++){
bitset<8> b(body[k+j]);
cout<<b;
}
cout<<endl;
}

//修改末字节后存入磁盘c:/temp/bmp/bmp-1-2.bmp
ft=fopen("c:/temp/bmp/bmp-1-2.bmp","wb");
for(i=0;i<62;i++) fputc(head[i],ft);
for(i=0;i<132;i++)fputc(body[i],ft);
fputc(body[132],ft);
fclose (fp);
fclose (ft);
}
ivanwo 2009-02-20
  • 打赏
  • 举报
回复
如果是VC6.0以上的版本,可以直接调用ATL的CImage类,可以读取多种格式的图像,很方便
hemdacker 2009-02-20
  • 打赏
  • 举报
回复
用Bitmap的API
fandh 2009-02-20
  • 打赏
  • 举报
回复
建议你下载一个CXIMAGE,里面什么都有,源代码、例子都有!
baihui212 2009-02-20
  • 打赏
  • 举报
回复
up,帮顶
发多一份,amal123@qq.com
内容概要:本文提出了一种基于氢储能的热电联供型微电网优化调度方法,并配套提供了Matlab代码实现。该方法通过引入氢储能系统,有效提升了微电网对风能、光伏等可再生能源的消纳能力与供能可靠性,解决了热电负荷强耦合、多能源设备协调运行以及系统经济性与稳定性之间的多目标平衡难题。研究构建了包含光伏发电、风力发电、燃料电池、电解槽、储氢罐、燃气锅炉等多种能源转换与存储设备的综合能源系统模型,采用先进的优化算法进行日前调度仿真,实现了能源供给与负荷需求的高效匹配,降低了运行成本和弃风弃光率。仿真结果验证了该策略在提升能源综合利用效率、增强系统韧性与低碳运行方面的显著优势。; 适合人群:具备电力系统、能源系统等相关领域基础知识,熟悉Matlab编程环境与数学优化建模方法的高校研究生、科研人员,以及从事微电网、综合能源系统、氢能利用等方向的工程技术人员。; 使用场景及目标:①用于教学与科研深入理解氢储能技术在微电网的集成机理与调度逻辑,并开展仿真验证;②为实际工程氢储能系统的容量配置、运行策略设计及多能协同优化提供理论依据与技术支持;③支撑高水平学术论文复现、科研课题申报及综合能源项目原型开发。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,细致剖析模型构建、约束设定与求解流程,掌握优化算法的应用技巧,并可在现有基础上拓展至多目标优化、鲁棒优化或结合机器学习进行负荷与新能源出力预测,以进一步提升调度模型的实用性与前瞻性。
内容概要:本文详细介绍了基于Simulink的直流电机转速电流双闭环调速控制系统模型的设计与仿真方法,重点围绕内外双闭环控制结构展开,以外环转速控制器和内环电流控制器为核心,采用PI调节器实现动态调节,从而提升系统的响应速度、抗干扰能力及运行稳定性。文系统阐述了建模流程、控制策略设计、PI参数整定方法以及仿真结果分析,充分验证了双闭环控制在动态性能和稳态精度方面相较于单闭环控制的显著优势,为电机控制系统的优化提供了理论依据与实践参考。; 适合人群:具备自动控制原理基础知识和Simulink仿真操作经验的电气工程、自动化、机电一体化等相关专业的本科生、研究生及科研人员。; 使用场景及目标:①用于高校实验教学帮助学生深入理解双闭环调速系统的工作机理与控制逻辑;②为工业现场直流电机控制系统的设计、参数调试与性能优化提供可靠的仿真平台与技术支持;③支持科研工作对先进控制算法(如自适应控制、智能控制等)在电机系统应用的前期验证与对比研究。; 阅读建议:建议读者结合Matlab/Simulink软件动手搭建系统模型,按照文档步骤完成仿真验证,重点关注PI控制器参数变化对系统动态响应的影响,并可通过引入负载扰动、设定值突变等工况测试系统的鲁棒性与调节能力。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧