基于Python的三线摆实验综合系统设计*

2023-12-11 05:53任一鸣
物理通报 2023年12期
关键词:表格摄像头绘制

姜 响 薛 丽 任一鸣

(湖北科技学院电子与信息工程学院 湖北 咸宁 437100)

在大学物理实验中,测量刚体的转动惯量是其中一个重要的实验项目,而三线摆法又是测量转动惯量的常用方法之一,在用三线摆法测量转动惯量的实验中,重要且困难的环节是测量圆盘摆动周期.传统测量方法有秒表计时法和光电门法.秒表计时通过记录50次摆动用时得出单次周期,但易受观测者影响且易出现误记现象;光电门精度提高,但仍易误记.以上两法均无法获得三线摆运动图像等信息.针对传统方法的改进已见诸报端[1-6],但安装传感器、磁化三线摆等做法会对其运动带来影响;某些传感器受限工作原理,所得图像仅呈周期变化,无法揭示角度或位移与时间的关系;利用Phyphox或Tracker等软件则需熟悉其使用技巧以及不同情况下生成数据的特征,不利推广.

鉴于以上原因,基于Python开发了一款软件.实验时在三线摆下盘贴上红色标志物,摄像头模块接入电脑并拍摄标志物运动,在软件内利用OpenCV将视频转化为一系列运动数据,利用FFT(快速傅里叶变换)和均值算法计算周期并以Matplotlib实时绘制图像.此外基于Tkinter架构了软件数据表格,可辅助及引导学生完成数据处理和误差分析;基于Pygame设计了实验仿真系统,可辅助学生学习实验操作.

1 设计方案

1.1 图像处理与数据可视化

图像处理捕捉标志物的实现主要通过OpenCV的图像二值化及轮廓识别等功能;计算周期则通过对均值点集作逐差及分析FFT频谱两种方法;数据可视化则以Matplotlib交互模式将已得数据实时绘图展示.此外因Matplotlib动态响应过长,故以多进程运行计算周期与数据可视.实现步骤如下:

图1 原始图像

以cvtColor函数将rgb通道改为hsv,并以inRange函数进行图像二值化,其参数为颜色空间.以红色为例,其hsv颜色空间为:色调156~180或0~10,饱和度43~255,明度46~255,处理后图像如图2所示.图像二值化后还需适当腐蚀噪点.

图2 二值化处理后图像

以findContours函数识别图像全部轮廓并将其中面积最大者视为标志物.求解该轮廓点集期望即得中心点坐标.记录计算机实时时间并与中心点坐标组合保存.在图像中重新绘制轮廓、标出中心点并写入时间,并以imshow函数显示(图3左上角).

图3 处理过程实拍

(2)计算周期.创建子进程并通过切片刷新共享内存向其传递数据.子进程中将位移均值归零后以两种算法计算周期.

均值算法:设置“宽度”变量.遍历数据,判断位移是否低于“宽度”,若是则以列表保存其对应时间.对列表中相近部分取平均获得近似均值点集,作逐差得周期.

FFT:调用numpy.fft.fft函数,参数为位移数据,采样周期为两点时间差,返回值为频谱数据.取数据实部并遍历寻出其最大或最小值点,其频率即为振动频率.

(3)可视化数据.在子进程中以Matplotlib.pyplot类的ion函数启动交互,subplot函数分配图像区间,plot函数绘制x-t、v-t、x-v和FFT频谱图像,text函数显示周期和最小分度值(图3).

(4)结果呈现.实测标志物面积并通过一个输入界面传入软件.软件将实测面积与图像中面积取比值并开方即得毫米单位与像素点单位的比率,进一步可得一系列拥有实际单位的数据.不启动交互绘制最终实验图像,并以csv格式导出全部数据.

1.2 操作及仿真界面

数据表格界面需实现输入、提示、数据拟合等功能,以稍底层的Tkinter架构,其它操作界面以easygui架构.实验仿真界面则以游戏库Pygame开发.具体实现操作及仿真界面如下:

1.2.1 数据表格等操作界面

对于数据表格,创建两个子进程并实例化窗口,在嵌套循环中生成并渲染Text控件并以StringVar变量跟踪其输入,组成输入部分;以label控件显示表格旁文字;以botton控件生成按钮并设置command参数的关联函数,“refresh”按键关联函数中将输入数据保存在pkl文件中以实现数据保存,“tips”按键关联函数中创建顶层窗口并显示图片以实现提示功能.表格和提示界面如图4所示.

图4 数据表格和部分提示

实验时,在data表格中填入测量数据,点击“tips”获取提示并在result表格中填写计算结果.保存数据后,系统以in语句检测数据中是否存在空字符串,若无则将字符串转为浮点数并验算数据处理及误差分析结果,并以信息窗口逐个呈现.此外考虑到“验证平行轴定理”环节有表达式[7]

(1)

实验需以线性拟合验证T2-d2关系及截距,实现方案:调用numpy.polyfit函数,参数为横纵坐标及拟合方程最高次幂,函数返回拟合方程及判据系数.以plot函数绘制拟合曲线及散点.可通过判据系数及截距与理论值相对误差验证平行轴定理.

其它操作界面都以调用easygui库中函数来实现.以系统主界面为例,调用choicebox函数,其choices参数为各功能名称的字符串,即得图5般界面.

图5 主界面

1.2.2 仿真实验界面

考虑Pygame底层性强,一些控件需提前绘制并架构.以箭头按钮和“游标卡尺”为例.对于箭头按钮,创建Arbutton类对象,初始参数包括窗口及箭头指向,箭头本体以lines方法绘制;创建set方法在窗口中渲染箭头,参数为箭尖坐标;创建isdown和isup方法,通过检测鼠标事件判断箭头按下或弹起.对于“游标卡尺”(图6),用绘图软件绘制主尺和分尺,仿真时导入图片并将两尺上下边缘贴合渲染,主尺按既定“待测物”参数向左移动即可模拟读数.

图6 游标卡尺仿真实验

界面架构以“气泡水准仪”和“摄像头调整”为例.“气泡水准仪”中,绘制并渲染3个大小颜色不同的圆充当“底座”“中心环”和“气泡”,组成虚拟气泡水准仪,其仿真实验界面如图7所示.实验时操控一系列按钮,“气泡”根据按钮事件进行移动;“摄像头调整”(图7)则以rectangle函数绘制长方形来模拟标志物并捕捉键盘w、a、s、d响应来模拟调整摄像头操作.

图7 气泡水准仪与摄像头调整实验界面

2 实验

电子天平称量实验中下盘质量m0以及圆环的质量m;游标卡尺测量上盘半径r、下盘半径R及圆环内径d和外径D.记录完毕后用气泡水准器调整三线摆上、下圆盘水平,最后卷尺测量3根摆绳绳长h.摄像头与电脑连接,在主界面“计算摆动周期”中点击“摄像头实时测量数据”,进入准备界面.

红色标志物贴于三线摆下圆盘侧面,摄像头正对标志物并且拉开一定距离,如图8所示.

图8 摄像头对准红色标志物

摆动三线摆,注意摆角尽可能小并尽量避免横摆.调整摄像头使之清晰呈现出标志物运动,按“Esc”键软件开始记录,生成动态图像同时计算摆动周期等数据.待80 s后自动停止记录,保存数据并重复多次实验.之后放上待测物,继续重复多次实验.

3 实验结果及分析

为保证结果可对比,实验时以软件和秒表同时测量摆动周期.表1、表2为测量数据.

表1 其他物理量的测量结果

表2 3种不同方法测得的周期、求得的转动惯量及其相对误差

由上表, FFT所得转动惯量数据的相对误差较小.比较发现以FFT算法获得的周期数据与其他组相比偏小,且空载圆盘转动惯量的相对误差明显较大.

三线摆圆盘转动的同时还不可避免存在横向摆动[1].某次实验中[x-t图像见图9(a)]两种频率相近的振动相互叠加,出现了明显的“拍”现象.而在由傅里叶变换所生成的频谱图像中,两种不同频率的波峰(或波谷)很容易区分.如图9(b)所示,出现了1和2两个频率不同的波谷.

(a)

(b)图9 某次实验所得系列图像

一定条件下,三线摆圆盘转动会与横摆产生耦合[8],影响周期测量,可解释空载圆盘转动惯量相对误差为何相比较大.

4 结束语

通过OpenCV采集三线摆运动数据,其改进对三线摆运动几乎无影响,且测量结果相比而言误差较小,更具使用价值;通过Matplotlib实现了三线摆运动的图像化,观察到传统实验难以观察到的现象,有助于培养学生从图像和表格中发现问题的能力.以自制数据表格进行数据处理,方便整理且实现了实验操作全程无纸化.基于Pygame搭建的二维实验仿真系统有助学生学习实验操作.

猜你喜欢
表格摄像头绘制
Art on coffee cups
浙江首试公路非现场执法新型摄像头
《现代临床医学》来稿表格要求
《现代临床医学》来稿表格要求
摄像头连接器可提供360°视角图像
统计表格的要求
基于太赫兹技术的新一代摄像头及其在安防领域的应用探讨
放学后
在转变中绘制新蓝图
本刊表格的要求