C1任务01-信息编码(拓展任务,修改png图片)

拓展任务

  • 先通过搜索引擎了解bmp或png⽂件数据格式的特征
  • 再⽤截图⼯具截⼀幅8×8⼤⼩纯⽩⾊的bmp/png图⽚
  • 然后⽤⼆进制编辑器观察bmp或png图⽚⽂件数据的规律
  • 重复上述步骤,摸清规律后,在⽩底上⽤⿊⾊线条「画」出字⺟「C」
bmp

BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。
由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。

png

透明性(transparency):这个性能可使图像中某些部分不显示出来,用来创建一些有特色的图像。
格式是无损数据压缩的,可为灰度图和真彩色图添加α通道。
PNG格式有8位、24位、32位三种形式,其中8位PNG支持两种不同的透明形式(索引透明和alpha透明),24位PNG不支持透明,32位PNG在24位基础上增加了8位透明通道(32-24=8),即
RGB+alpha,因此可展现256级透明程度。

截图裁剪8×8的纯白色图片

在这里插入图片描述

上面是纯白色的png图片,可以先截一个合适大小的图,再裁剪为分辨率为8×8的图片。

bmp文件位图信息头:
地址偏移大小作用
0000h2 bytes说明文件的类型
0002h4 bytes该位图文件的大小,用字节为单位
0006h2 bytes保留必须设置为0
0008h2 bytes保留必须设置为0
000Ah4 bytes说明从文件头开始到实际的图像数据之间的字节偏移量
000Eh4 bytesBITMAPINFOHEADER结构所需字数
0012h4 bytes图像的宽度
0016h4 bytes图像的高度
001Ah2 bytes为目标设备说明颜色平面数,其值将总是被设为1
001Ch2 bytes说明比特数/像素,其值为1,4,8,16,24或32
001Eh4 bytes说明图像数据压缩的类型
0022h4 bytes说明图像的大小
0026h4 bytes说明水平分辨率
002Ah4 bytes说明垂直分辨率
002Eh4 bytes说明位图实际使用的彩色表中的颜色索引数
0032h4 bytes说明对图像显示有重要影响的颜色索引的数目如果是0,表示都重要

下面的数据就是调色板了。调色板其实是一张映射表,标识颜色索引号与其代表的颜色的对应关系。

用二进制编辑器打开bmp图片文件

在这里插入图片描述

png数据格式

png文件格式的详解:https://blog.csdn.net/weixin_42045038/article/details/82818435

运用opencv在纯白色8×8的png图片上画出“C”

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,由python语言编写。
本实验用到:Pycharm集成软件,一张8×8纯白色png图片

在这里插入图片描述

可以在pycharm中点击File->settings->Project:name->Project Interpreter中添加opencv这个包

在这里插入图片描述

根据8×8的分辨率,绘制修改草图:

利用opencv修改数据,代码如下

import cv2
#读取图片imread('文件名',读取方式)
img = cv2.imread('1234.png', cv2.IMREAD_UNCHANGED)

"""
cv2.IMREAD_COLOR # :1 加载一个彩色图像,图像的任何透明度都将被忽略。这是默认标志
cv2.IMREAD_GRAYSCALE # :0 以灰度模式 (grayscale mode) 加载图像
cv2.IMREAD_UNCHANGED # :-1 加载图像,包括alpha channel (透明通道)
"""

#绘制“C”的图案
for i in range(2,6):
    img[1, i] = [0, 0, 0]
    img[6, i] = [0, 0, 0]

for i in range(2,6):
    img[i,2]=[0,0,0]
img[2,5]=[0,0,0]
img[5,5]=[0,0,0]
#保存图片,imwrite('输出文件名',图片矩阵信息)
cv2.imwrite("12345.png", img)

key = cv2.waitKey(0)
print(key)
#销毁窗口
cv2.destroyAllWindows()

运行结果:

在这里插入图片描述
在这里插入图片描述

原1234.png的图像显示:

在这里插入图片描述

修改后12345.png的图像显示:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李钰铖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值