字典练习、二进制图像文件的读写

    科技2024-12-27  22

    创建一个字典,有26个键从"A"到"Z",每个键关联的值是从1到26。

    代码实现:

    # 创建一个字典,键为A~Z,值为1~26 dic_alphabeta = {chr(i): i-64 for i in range(65, 91)} print("字典内容为:{}".format(dic_alphabeta))

    运行结果:

    读取一个二进制图像文件,并尝试进行图像处理(更改其像素数值)再写回文件。

    代码实现:

    import numpy as np import struct import matplotlib.pyplot as plt # 读取一个二进制图像文件,并尝试进行图像处理(更改其像素数值)再写回文件。 image = np.zeros((256, 256), dtype=np.float) for i in range(256): image[i] = np.arange(256) # 创建一个二进制文件 fp = open('image.raw', 'wb') write_buf = struct.pack('={}f'.format(image.size), *image.flatten()) fp.write(write_buf) fp.close() # 读取二进制文件 fp = open('image.raw', 'rb') raw_data = fp.read(256 * 256 * 4) raw_data = struct.unpack('={}f'.format(256 * 256), raw_data) image = np.asarray(raw_data).reshape(256, 256) fp.close() plt.subplot(121) plt.imshow(image, cmap=plt.cm.gray) # 进行图像处理,使灰度值按照对角值进行变化 def turntran(grayarray): new = np.array(grayarray).reshape(256, 256) for i in range(256): for j in range(256): new[i][j] = (i+j)/2 for i in range(256*256): p = int(i/256) q = i % 256 grayarray[i] = new[p][q] return grayarray # 读取二进制文件 fp = open('image.raw' , 'rb') raw_data = fp.read(256 * 256 * 4) raw_data1 = np.zeros(256 * 256, dtype=np.float) raw_data = struct.unpack('={}f'.format(256 * 256), raw_data) raw_datachange=list(raw_data) # 将元组数据转化为列表数据用于处理 raw_data1 = turntran(raw_datachange) raw_data2 = tuple(raw_data1) # 处理之后再将列表还原为元组 image = np.asarray(raw_data2).reshape(256, 256) # 改变数组形状为256*256 fp.close() # 显示图像 plt.subplot(122) plt.imshow(image, cmap='gray') plt.show() # 写入新的二进制文件 fp = open('image1.raw', 'wb') write_buf = struct.pack('={}f'.format(image.size), *image.flatten()) fp.write(write_buf) fp.close()

    运行结果:

    左侧为原始图像,右侧为处理后图像。

    Processed: 0.014, SQL: 8