万丈高楼平地起

C语言大作业

一、学习笔记篇

1.学习MarkDown

MarkDown注重写作本身,而非花俏的界面

编辑器:vscode

插件:Markdown,Markdown Preview

2.bmp文件格式

BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,

可以分成两类:设备有向量相关位图(DDB)和设备无向量相关位图(DIB)。

1.进制表示

H 表示该数是十六进制,B 表示二进制;O 表示八进制。

2.BMP文件组成

文件头,信息头,调色版,数据文件
这些维基百科一下应该可以明白
只不过需要一些耐心。
值得注意的是BMP文件是16进制文件,你在读入的时候 需要进行二进制的转换

3.c语言读入bmp文件

在读入BMP文件之前,我希望你至少对于指针,结构体以及文件二进制输入输出有了解。
如果你对这个还不了解,那我建议你可以百度了解一下先或者翻一下你的大学教材,因为这才是基础。 如果你看了以上知识了,那么你心中大概就知道该怎么去完成这个作业了。
值得一提的是:
1.fread,fwirte,fopen,fclose是怎么使用的?
2.结构体的内存是这么分配的,它的初始地址是?
3.结构体所占内存是怎么计算的?为什么成员字节数会小于等于结构体字节?
4.怎么解决成员字节数会小于等于结构体字节(字节对齐)这个问题?
5.文件如何进行二进制输入输出? 解答:
1. 自行百度了解
2. 结构体你可以理解为一个数组,它的每个成员地址是和数组一样是连续的,
其实你会发现内存存储永远满足一个连续性,所以函数的内存也是连续的。
这样你就发现实际上读入的时候我直接将信息头和文件头写出一个个结构体
之后从结构体开始位置和BMP文件的对应位置开始,一一复制过去就可以了。
3. 成员字节数会小于等于结构体字节,是因为存在一个字节对齐问题,系统
处理的时候是连续4个字节处理的,因此不是4个的倍数就会补齐,假设一个
结构体成员是3字节的a,4字节的b,补全之后结构体的字节就变成了((3+1)+4)>7
4. 所以如果贸然赋值就会有数据对齐问题,这个时候就要利用#pragma pack()
具体使用方法还请百度
5. 被这个地方卡了一下午,务必注意二进制输入就一定要二进制输出不然后果就是
扭曲的人脸 小小建议:
在处理数据时候,可以下载Hex Editor Neo观察BMP文件数据 和自己的进行比对
看有没有问题

4.图像直方图均衡算法实现

处理完数据之后,就作业的均衡算法就是套公式了,所以建议把PPT仔细看看,有很多提示的

5.总结

写这个之前,先考虑要什么基础知识,先把基础知识巩固之后,再去完成这项作业
不要一上来就想着马上写完。

6.推荐参考资料

最佳参考资料:老师提供的PPT
BMP文件格式:https://www.cnblogs.com/wainiwann/p/7086844.html
图像直方图均衡算法: 老师提供的PPT(最佳)
https://mp.weixin.qq.com/s/Lx6nGILofQN9e5KuWgh7mw(进阶了解)
C语言 fread()与fwrite()函数说明与示例
https://www.cnblogs.com/xudong-bupt/p/3478297.html

BMP图像直方图均衡算法(C语言大作业)的更多相关文章

  1. #006 C语言大作业学生管理系统第三天

    还差最后两部分 读取文件 恢复删除的学生信息 先学会处理文件的 知识点,再继续跟着视频做这个作业. 应该明天周六能把视频里手把手教的学生管理系统敲完 第二周尽量自己能完成C语言课本最后面那道学生管理系 ...

  2. 【C】C语言大作业——学生学籍管理系统

    文章目录 学生管理系统 界面 主界面 登陆界面 注册界面 管理界面 学生界面 退出界面 链接 注意 学生管理系统 学C语言时写的一个大作业,弄了一个带图形界面的,使用的是VS配合EasyX图形库进行实 ...

  3. C语言大作业---学生信息管理系统

    xxxx信息管理系统 简介 因为大作业规定的踩分项就那么多,为了不浪费时间 + 得分,就写成这样.现在看看,命名不规范,书写风格糟糕,全塞在一个源代码中······ 不过,应付大作业是没问题的 实验报 ...

  4. #004 C语言大作业学生管理系统试着做

    链表不会用 文件不会使 在这种情况下就边写边做 希望这个月能做完这个作业 #include<stdio.h> #include<stdlib.h> #include<st ...

  5. #007 C语言大作业学生管理系统第四天

    第四天还差恢复已删除学生功能 对于我来说,已经开始很复杂了. 小细节太重要了,边写边出错 1 #include<stdio.h> #include<stdlib.h> #inc ...

  6. BMP头文件格式以及C语言读取头文件【转】

    BMP头文件格式以及C语言读取头文件[转] (2011-12-24 22:59:17) 转载▼ 标签: 杂谈 分类: 各个领域的知识 BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文 ...

  7. 【转】BMP图像文件格式

    5.1  BMP图像文件格式 BMP图像文件格式是游戏中常用的图像资源文件格式,BMP图像文件起源早,程序员对BMP都比较熟悉,再加上BMP格式简单,读取和写入非常容易实现,所以无论Windows的还 ...

  8. c++小学期大作业攻略(一)环境配置

    UPDATE at 2019/07/20 20:21 更新了Qt连接mysql的方法,但是是自己仿照连VS的方法摸索出来的,简单测试了一下能work但是不保证后期不会出问题.如果你在尝试过程中出现了任 ...

  9. 模式识别课程大作业 Shopee 商品图像检索

    大作业项目简介 在如今的信息科技时代, 带有拍照功能的移动设备如手机.相机等得到了极大的普及和流行, 各种各样的图片和视频可以随时随地获得, 并借助互联网快速传播, 这种趋势使得网络上的数字图片和视频 ...

随机推荐

  1. PHP中的事件处理

    看下面的事件类 class Event { protected static $listens = array(); /** * [listen 注册监听事件] * @param [string] $ ...

  2. Connect C# to MySQL

    Connect C# to MySQL using MySQL Connector/Net, Insert, Update, Select, Delete example, Backup and re ...

  3. Struts 2(二):使用Struts2

    本文简单描述如何在Eclipse中使用使用Struts2,并介绍一下Struts2的配置文件 注:Struts2默认需要Java 5.0及其以上版本的运行环境支持,Web容器需要支持Servlet 2 ...

  4. 理解学习Springboot(一)

    Springboot有何优势呢,网上一大推,这里就不写了. 一.配置maven 1.在maven官网下载maven,http://maven.apache.org/download.cgi 2.将下载 ...

  5. JAVA Date、String、Calendar类型之间的转化

    1.Calendar 转化 String //获取当前时间的具体情况,如年,月,日,week,date,分,秒等 Calendar calendat = Calendar.getInstance(); ...

  6. sqli-labs学习笔记 DAY1

    DAY 1 准备工作 安装phpstudy 安装配置sqli-labs 学习笔记 SQL语句的注释:–, # +在URL经过编码后会编码为空格 SQL语句的查询语句:SELECT column_nam ...

  7. python—2.x中如何使用中文

    python2.x 默认使用ASCII编码格式 python3.x 默认使用UTF-8编码格式 在python2.x文件的第一行增加一下代码,解释器会以utf-8编码来处理python文件. # *_ ...

  8. 记录一次爬虫报错:Message: Failed to decode response from marionette

    由于标题中的错误引发: Message: Tried to run command without establishing a connection 解释: 先说一下我的爬虫架构,用的是firefo ...

  9. 初创型公司如何经济有效的申请邓白氏编码(DUNS)

    听说有免费,和800元,1500元,上万元等不同的申请方式?听说申请完还要等十数个工作日让邓白氏和苹果的数据库同步.不同高低价格的申请方式得到的编码都能被苹果接受吗? http://www.zhihu ...

  10. text-align与vertical-align属性的区别

    1.text-align属性设置元素在水平方向(x轴)的位置 text-align:left://文本居左 text-align:center://文本居中 text-align:right: //文 ...