题目

某数据压缩方法描述如下: ①原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;②原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个为0,第2个为0;③原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个为0,第2个为重复数的个数,第3个为该数本身。 根据上述压缩方法,对应的解压缩方法示例如图所示。 小明学习了Python的PIL、matplotlib和numpy等模块知识后,现有图像文件“台州.bmp”,该文件的颜色模式为RGB,将该图像文件的每个像素点转换成灰度值(值为整数)后,使用上述压缩方法进行压缩并保存为文本文件。颜色RGB值转灰度值的公式如下: 灰度值=0.299×红色颜色分量+0.587×绿色颜色分量+0.114×蓝色颜色分量 (1) 如果压缩数据为“23,0,21,66,0,0,77,0,5,0”,则解压缩数据的个数是。 (2) 实现上述功能的Python程序如下。请在划线处填入合适代码。 from PIL import Image import numpy as np import matplotlib.pyplot as plt img = np.array(Image.open("台州.bmp")) row,cols,rgb = img.shape s=[] for i in range(row): for j in range(cols): r,g,b = img[i,j] hdz = s.append(hdz) ss = []:j = 0 while j<len(s)-1: if s[j]!=s[j+1]: if s[j]!=0: ss.append(s[j]) else: ss.extend()    #extend 函数用于在列表末尾一次性追加另一个序列中的多个值 j+=1 else: c = s[j] for k in range(j+1,len(s)) : if c!=s[k]: break else: ss.extend([0,k-j,s[j]]) j=k if j!=len(s): ss.append(s[j]) f = open("台州 255.txt","w+") f.write(",".join(map(str,ss))) f.close() 答案: 【1】29 【1】int (0. 299*+0.587*g+0. 114*b)【2】[0,0]或(0,0)【3】k=k+1
信息技术 试题推荐
最近更新