当前位置: 高中信息技术 / 综合题
  • 1. (2023高二下·杭州期中) 某数据压缩方法描述如下:

    ①原始数据中,某数不为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. (1) 如果压缩数据为“23,0,21,66,0,0,77,0,5,0”,则解压缩数据的个数是
    2. (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()

微信扫码预览、分享更方便