import struct import numpy as np def read_bmp(file_name): # 读取 bmp 文件头部信息 with open(file_name, "rb") as f: data = f.read(54) head = struct.unpack("<ccIIIIIIHH", data) width = head[-4] height = head[-3] bits = head[-1] if bits != 24: raise ValueError("Only support 24 bits bmp image") # 读取 bmp 文件像素数据 with open(file_name, "rb") as f: f.seek(54) data = f.read() pixels = np.frombuffer(data, np.uint8) pixels = pixels.reshape((height, width, 3)) return pixels def write_bmp(pixels, file_name): # 获取图片宽度和高度 height, width, _ = pixels.shape # 计算填充字节数 padding = (4 - (width * 3) % 4) % 4 new_width = width + padding # 创建 bmp 文件头部信息 head = [ ord("B"), ord("M"), # 文件类型 new_width * height * 3 + 54, # 文件大小 0, 0, #
时间: 2023-02-11 14:10:16 浏览: 103
这段代码中,首先导入了两个库:struct和numpy。struct库用于解析二进制数据,numpy库用于处理矩阵数据。然后定义了一个名为read_bmp的函数,用于读取文件名为file_name的bmp图片。
相关问题
import os import struct import numpy as np # 读取标签数据集 with open('./train-labels.idx1-ubyte', 'rb') as lbpath: labels_magic, labels_num = struct.unpack('>II', lbpath.read(8)) labels = np.fromfile(lbpath, dtype=np.uint8) # 读取图片数据集
这段代码是Python中导入三个模块:os、struct、以及numpy。os模块提供了一些与操作系统交互的函数;struct模块用于解析和打包数据,通常用于二进制数据;numpy是Python中科学计算的基本库,提供了高效的数组计算和数学函数。
阅读全文