创新实践期末考试复盘与知识点

2026年7月2日 Crystal-Sky 12 min read 创新实践期末考试复盘知识点
Abstract. 这次考试之前,原本以为试卷会比较依赖 MOOC 原题,真正考出来以后才发现全是PPT 里的概念。所以历年的试卷和mooc其实参考价值很小,除了大题以外。

一、单选题

单选题里有不少 MOOC 原题的影子,但也混进了不少 PPT 细节。

1. 切换到上级目录的命令

点评: 这一题比较基础,终端里切换到上一级目录使用 cd ..

知识点: cd 用于切换目录,.. 表示当前目录的上级目录。

2. 图像形态学中的收缩与像素区域变化

点评: 我没记错的话这题好像是一个错题,前面强调收缩,然后最后来了个像素增多,疑似拼好题,收缩是腐蚀,像素增多是膨胀。

知识点: 腐蚀会让前景区域变小,常用于去除小噪声;膨胀会让前景区域变大,常用于填补空洞或连接断裂区域。

3. Python 中的与运算

点评: python的与运算是and,而不是&

知识点: and 是Python逻辑运算符,判断表达式真假;。

4. LCD1602 英文字符的编码方式

点评: 这个题ppt里面好像也没有,可能是mooc视频里讲了?不太清楚,有二进制、十六进制、ASCII和国际码,猜一下ASCII

知识点: LCD1602 显示英文字符时通常按字符编码写入显示数据,常见英文字符可对应 ASCII 编码。

5. 检测物体遮挡的传感器

点评: 这题直接选光电传感器,高中光电门好吧。

知识点: U 型光电开关由红外发射器和接收器构成,两者位于 U 型槽两侧并形成光轴。当物体经过 U 型槽并阻断光轴时,光电开关会输出检测信号。

6. OpenCV 色彩阈值化函数

点评: 如果刷过 MOOC 题并记住了常见 OpenCV 代码,这题应该能直接选 cv2.inRange()。有意思的是,后面大题里的注释似乎也把答案露出来了。

知识点: cv2.inRange(hsv, lower, upper) 用于判断像素是否落在指定颜色范围内,常用于 HSV 空间下的颜色阈值分割。

7. 人脸检测与人脸识别的区别

点评: ppt上原话。

知识点: 人脸检测:指对于任意一幅给定的图像/视频帧,采用一定的策略对其进行搜索以确定其中是否含有人脸,如果是则返回一脸的位置、大小和姿态。(有没有人脸)

人脸识别:基于人的脸部特征信息进行身份识别的一种生物识别技术。(是谁的脸)

8. 二维码解码操作的库函数

点评: 巧了,前一天瞅到了这个: pyzbar

知识点: pyzbar 的核心解码函数是 decode(),可用于识别二维码、条形码等编码图像。

9. 树莓派的主存卡类型

点评: 如果看ppt了就知道是 TF 卡,也就是 Micro SD Card。

知识点: 树莓派常通过 Micro SD/TF 卡安装系统并存储数据。

10. PCF8591 的功能

点评: PCF8591 文档首页就写得很清楚:它是 8 位 A/D 和 D/A 转换器。

知识点: PCF8591 是带 I2C 接口的 8 位数据采集器件,常见功能包括多路模拟输入、模拟输出和 A/D、D/A 转换。

二、多选题

多选题是整张卷子的重灾区。最难的地方不是完全不会,而是不确定到底该不该四选,选多了又害怕。

1. 属于开关量类型的传感器和器件

点评: 四个选项有三个带开关:轻触开关、触摸开关、倾斜开关,剩下一个不知道选不选,忘了是个啥了。

知识点: 开关量输出通常只有两种状态,例如高/低电平、通/断、0/1。

2. cv2.flip(img, flipcode)flipcode 的含义

点评: 这题算运气好,考前刚好扫到过,直接四选

知识点: flipcode=0 表示沿 x 轴翻转;flipcode>0 表示沿 y 轴翻转;flipcode<0 表示 x、y 轴同时翻转。

3. Haar 分类器的重要组成

点评: 不太自信考场上,连着两个四选。

知识点: Haar 分类器通常包括 Haar-like 特征、积分图方法、AdaBoost 训练和级联分类器。

4. 二维码相比一维码的优势

点评: 这题比较遗憾。当时没理解“二维码纠错能力更强”,以为二维矩阵错一块会更难恢复。实际上二维码正是因为有纠错编码,容错能力更强。

知识点: 一维码主要在一个方向表达信息;二维码在水平和垂直两个方向存储信息,容量更大,可表达更复杂的数据,并且通常具有更强的纠错能力。

5. Python 循环语句

点评: 这题比较基础,循环语句就是 forwhileif 是条件判断,break 是循环控制语句。

知识点: for 常用于遍历序列或可迭代对象;while 根据条件反复执行。

6. MPU6050 的特征

点评: 这题有一个选项它是I2C总线,所以不能与其他传感器合用包错的,但是A选项说MPU6050组成上包括三轴陀螺仪、三轴加速度计,也不知道对不对,少说一个,草台班子。

知识点: MPU6050 是 6 轴运动跟踪设备,包含三轴陀螺仪、三轴加速度计和数字运动处理器,并带有片上温度传感器。它通常通过 I2C 总线与微控制器通信,也可通过辅助 I2C 总线连接其他传感器。

7. 图像掩码的作用

点评: 这题 PPT 上标得比较明显,依旧四选

知识点: 掩码可用于提取感兴趣区域、屏蔽无关区域、辅助结构特征提取,以及制作特殊形状图像。

8. 图像形态学处理

点评: 依旧全是,四选。

知识点: 开运算通常是先腐蚀后膨胀,适合去除小噪声;闭运算通常是先膨胀后腐蚀,适合填补小孔洞。

9. GPIO 编码方式

点评: 终于来了一个 MOOC 原题的内容。

知识点: 常见 GPIO 编码方式包括 WiringPi、BCM 和 BOARD。BOARD 使用物理引脚编号,BCM 使用 Broadcom 芯片 GPIO 编号。

10. I2C 通信

点评: 这题是把 MOOC 里关于起始位、终止位、数据线和时钟线的内容杂合在了一起。刷过题以后会轻松很多。

知识点: I2C 主要使用 SDA 数据线和 SCL 时钟线;总线空闲时二者通常为高电平;起始条件为 SCL 高电平时 SDA 下降沿;终止条件为 SCL 高电平时 SDA 上升沿。

三、填空题

填空题应该是这张卷子的最大痛点

1. 等待键盘输入函数

点评: 后面判断题里甚至出现了 cv2.waitKey(),可以直接借来用。

知识点: OpenCV 中常用 cv2.waitKey() 等待键盘输入或控制窗口刷新间隔。

2. 树莓派开发的 SSH 工具和远程桌面工具

点评: 当时只记住了远程桌面工具,SSH 工具没有记牢。

知识点: 常见 SSH 工具是 PuTTY,远程桌面工具可使用 VNC Viewer。

3. 查看 IP 地址的命令

点评: 这题比较轻松,答案是 ipconfig

知识点: Windows 下常用 ipconfig 查看网络配置信息;Linux/树莓派环境中也常见 ifconfigip addr

4. 树莓派供电接口与其他接口

点评: 这题是个草台班子,ppt写的Pype-c,mooc写的Type-c,服了。

知识点: 树莓派 4B 常见供电接口为 USB Type-C;板上还包含 GPIO、HDMI、摄像头接口、显示屏接口、网口、USB 等接口。

5. GPIO 常态下的高低电平

点评: 这题不太记得了,好像是写个Pull-up。 如果是上拉输入,常态通常为高电平;如果是下拉输入,常态通常为低电平。

知识点: Pull-up 会把输入端默认拉到高电平,按键或外部电路触发时可能变为低电平;Pull-down 会把输入端默认拉到低电平。

6. 返回指定 pin 电平状态的函数

点评: 我猜想考input(),但是没证据。

知识点: GPIO.input() 用于读取某个 GPIO 当前电平状态;GPIO.output() 用于设置某个 GPIO 引脚输出高电平或低电平。

7. I2C 总线上最多可接几个 PCF8591

点评: 这题刷过 MOOC 的话会比较熟,答案是 8 个。

知识点: PCF8591 通过地址引脚组合改变地址,常见情况下可在同一 I2C 总线上挂接多个器件。

8. 有源蜂鸣器与无源蜂鸣器

点评: ppt原话

知识点: 有源蜂鸣器内置振荡器,通常发出单一提示性报警声;无源蜂鸣器需要频率脉冲驱动,可发出不同频率的声音。

9. HSV 的概念

点评: 考前晚上刚好问了一句,第二天就考到,属于意外捡到。

知识点: H 表示色相/色调 Hue;S 表示饱和度 Saturation;V 或 B 表示亮度 Value/Brightness。

10. Haar 分类器

点评: 不太记得这个考啥了,反正不会

知识点: 基于 Haar 特征分类器的对象检测技术是一种有效的对象检测方法,通常通过大量正负样本训练分类器,再用于目标检测。

11. Python 函数定义关键字

点评: 这题属于基础题,稳住就能拿分。

知识点: Python 使用 def 定义函数。

12. 轻触开关按下和松开的高低电平

点评: 这题直接痛失两分。我把高低电平写反了,整张卷子里凡是涉及高低电平的地方好像都错了。

知识点: 在常见上拉输入连接中,按键松开时检测到高电平,按键按下时接地并检测到低电平。

四、大题

判断题没有单独整理:一是数量太多,二是很多说法只要认真刷 MOOC 就能快速判断,而且答案很绝对,基本上那些只要、仅仅这些话的都是错的。

大题一:补全代码

OpenCV 目标识别代码补全

问题: 题面要求根据给出的目标识别流程补全 5 个空,核心围绕图像缩放、色彩空间转换、图像腐蚀、边界查找和质心计算。

开启摄像头:VideoStream(0).start() 或 cv2.VideoCapture(0)
读取一帧图像:vs.read()
图像尺寸缩放:(1)
色彩空间转换:(2)
指定感兴趣区域 ROI:cv2.inRange(hsv, colorLower, colorUpper)
图像腐蚀:(3)
找到指定区域的边界:(4)
计算轮廓面积并取最大:max(cnts, key=cv2.contourArea)
找到区域质心:(5)
画圆及圆心:cv2.circle()

点评: 前面几个空比较顺,后面两个很折磨了,不知道写哪个,因为绝大部分考前都是背诵,没理解那个函数是干啥的,换个说法就不会了

知识点: 这类流程通常包括 VideoStream(0).start()cv2.VideoCapture(0) 开启摄像头,vs.read() 读取帧,cv2.cvtColor() 转换色彩空间,cv2.inRange() 做颜色阈值化,形态学操作去噪,cv2.findContours() 查找轮廓,cv2.moments() 计算矩并求质心,最后用 cv2.circle() 标记目标。

大题二:往年真题

这一题是 2021-2022 真题的原题,基本靠背诵。

img1

大题三:超声波传感器

简述超声波传感器的原理以及应用场景

点评: 无语了,看都没看,只能瞎编。

知识点: 超声波传感器通过发射超声波并接收反射回波,根据传播时间和声速计算距离。常见应用包括避障、测距、液位检测、机器人导航和倒车雷达等。

大题四:项目题

围绕自己的项目作答

问题: 题目要求简述项目功能,写出使用的传感器及硬件结构图,并画出流程图。

点评: 这个每年都考,有时候还问你项目遇到过什么bug,怎么解决的,所以一定要记一记,这个还是很ok的。

大题五:补全代码

双色 LED 与 PWM 代码补全

问题: 第一问考补全连线图(答题卡给了你图,考你怎么接线);第二问题面给出双色 LED 的控制程序,要求补全 GPIO 初始化、PWM 对象创建、PWM 启动、颜色循环和资源释放函数中的空。

点评: 双色LED纯背诵题。

知识点: 双色 LED 可通过两个 GPIO 引脚分别控制红色和绿色通道,再通过 PWM 调节亮度。按题面空位整理如下:

import RPi.GPIO as GPIO
import time

colors = [0xFF00, 0x00FF, 0x0FF0, 0xF00F]
makerobo_pins = (11, 12)  # PIN 物理管脚:11 红、12 绿

# GPIO 基础初始化
______(1)__________      # 使用物理引脚编号
GPIO.setwarnings(False)
______(2)__________      # 设置引脚为输出模式
GPIO.output(makerobo_pins, GPIO.LOW)

# 创建两路 PWM 对象,频率 2KHz
______(3)__________
______(4)__________

# PWM 初始占空比 0(灯熄灭)
______(5)__________
______(6)__________

def makerobo_pwm_map(x, in_min, in_max, out_min, out_max):
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min

def makerobo_set_Color(col):
    R_val = col >> 8
    G_val = col & 0x00FF
    R_val = makerobo_pwm_map(R_val, 0, 255, 0, 100)
    G_val = makerobo_pwm_map(G_val, 0, 255, 0, 100)
    p_R.ChangeDutyCycle(R_val)
    p_G.ChangeDutyCycle(G_val)

def makerobo_loop():
    while True:
        ______(7)__________:
            ______(8)__________
            ______(9)__________

def makerobo_destroy():
    ______(10)__________
    ______(11)__________
    GPIO.output(makerobo_pins, GPIO.LOW)
    GPIO.cleanup()

if __name__ == "__main__":
    try:
        makerobo_loop()
    except KeyboardInterrupt:
        makerobo_destroy()

如果按常见写法补全,大致是:GPIO.setmode(GPIO.BOARD)GPIO.setup(makerobo_pins, GPIO.OUT)p_R = GPIO.PWM(makerobo_pins[0], 2000)p_G = GPIO.PWM(makerobo_pins[1], 2000)p_R.start(0)p_G.start(0)for col in colorsmakerobo_set_Color(col)time.sleep(0.5)p_G.stop()p_R.stop()

总结下来就是,ppt上的细节知识点,尤其是打红的一定要细看,然后大题每年考的都比较固定。