1. 有图像如图a所示,用以下算法记录图像的像素点分布。先将像素的颜色值进行调整,使之成为一幅黑白图像(如图b所示),再将黑白图像中像素点(0表示黑色,1表示白色)分布以列表形式存储,如[2310,321,1230……]表示先有231个连续的黑色像素,再接着是32个连续的白色像素,再接着是123个连续的黑色像素……,列表中部分数据如图c所示。

图 a

图b

图 c

实现上述功能的Python代码如下:

#导入库, 代码略

img=np.array(Image.open ("hz.png").convert("L"))       #将图像转换为二维矩阵

rows,cols=img.shape          #图像尺寸分别赋值,rows表示行数,cols表示列数

for i in range(rows):

    for j in range(cols):

        if img[i,j]>180:     #0~255表示256级灰度值,0表示黑色,255表示白色

            img[i,j]=1

        else:

            img[i,j]=0

plt.imshow(img,cmap="gray")    #显示灰度图像

plt.show ()   #弹出包含了图片的窗口

c=img[0,0]; cnt=0; ys=[]

for i in range(rows):

    for j in range(cols):

        if img[i,j]==c:

            ______

        else:

            ys.append(cnt*10+c)

            cnt=1

           

ys.append(cnt*10+c)

print(ys)

(1) 由程序代码可知,对图像的记录方式采用(填字母: A .逐行记录/B .逐列记录 /C .随机记录) 。
(2) 若得到图d颜色加深的图像,则划波浪线处 代码应修改为(   )(单选)

图 d

A. img[i,j]>210 B. img[i,j]>140 C. img[i,j]<140 D. img[i,j]<210
(3) 在横线处填上合适的代码。
(4) 程序加框处代码有错,请改正。
【考点】
编程处理数据与可视化;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
真题演练
换一批
2. 为了凸显图像的轮廓及其特征,可以对图像进行二值化处理。图像二值化是将图像上的像素点的灰度值设置为0或1(0表示黑色,1表示白色)。小明设计图像二值化算法如下:

输入数据:将原图的每个像素的RGB灰度值存入二维数组img中;

处理数据:如果一个像素的RGB灰度值大于或等于阈值,则将该像素RGB灰度值设置为1,否则设置为0;

输出数据:将处理后的数据以图像形式呈现。

例如:部分图像二值化过程图-1所示。

图-1

请回答下列问题:

(1) 根据题意,若阈值为100,则图中第一行二值化处理后的编码是(用十六进 制表示)。
(2) 在不改变大小的前提下,一张1024*768,256级灰度图像进行二值化处理后,其图像的压缩比是(   )(单选,填字母)。 A. 256:1 B. 8:1 C. 4:1 D. 2:1
(3) 实现图像二值化功能的Python程序段如下,请在划线处填入合适的代码。

from PIL import Image

import numpy as np

import matplotlib.pyplot as pl

img=np.array(Image.open('deer.jpg').convert('L'))

key=int(input('请输入设定阈值: '))

rows,cols=img.shape

for i in range(rows):

    for j in range(cols):

        if :        #每个像素灰度值与阈值进行比较

            img[i,j]=1

        else:

            img[i,j]=0

#图像输出程序略

(4) 阈值为100的运行结果如图-2所示,若输入阈值为50,运行程序后输出的图像有可能的是(   )(单选,填字母)。

图-2

A. B. C.
综合题 普通
3. 某校高二共有10个班级,其某次体能测试数据已转换成相应成绩,保存在“体能数据.xlsx”文档中,部分数据如下图所示。

小王同学用Python程序及Pandas模块对每班肺活量成绩进行简单分析,并用matplotlib绘制图表,部分代码如下:

import pandas as pd

import matplotlib.pyplot as plt

df=     ①     ('体能数据.xlsx')             #读入体能数据

#填写班级数据,数据来自每位学生学号的第二到三位,如 S1039 为第 10 班

for i in range(len(df)) :

   df.at [i,'班级']=df.at [i,'学号'][1:3]

df_m=       ②           #筛选出所有男生数据

gp=df_m.groupby('班级',as_index=True).mean()

print(gp)

# 下列两行代码使得 pyplot 画出的图形中可以显示中文及负号

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

plt.title('高二各班男生肺活量平均成绩')

x=gp.index

       ③      #获取 y 轴数据

plt.ylim(70,100)

plt.xlabel('班级')

plt.ylabel('肺活量')

plt.bar (x,y,label='肺活量')

_____④_______

plt.show ()

请回答下列问题:

(1) 划线①处代码实现从Excel 文件“体能数据.xlsx”中读取相关数据。为实现该功能,划线①处代码可选择下列选项中的。(填字母:A . pd.read_excel / B . pd.open  / C . pd.dataframe)
(2) 要实现上述程序的功能,请完善划线②、③、④处的代码

综合题 普通