• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Python的三線擺實驗綜合系統(tǒng)設(shè)計*

    2023-12-11 05:53:30任一鳴
    物理通報 2023年12期
    關(guān)鍵詞:表格攝像頭繪制

    姜 響 薛 麗 任一鳴

    (湖北科技學(xué)院電子與信息工程學(xué)院 湖北 咸寧 437100)

    在大學(xué)物理實驗中,測量剛體的轉(zhuǎn)動慣量是其中一個重要的實驗項目,而三線擺法又是測量轉(zhuǎn)動慣量的常用方法之一,在用三線擺法測量轉(zhuǎn)動慣量的實驗中,重要且困難的環(huán)節(jié)是測量圓盤擺動周期.傳統(tǒng)測量方法有秒表計時法和光電門法.秒表計時通過記錄50次擺動用時得出單次周期,但易受觀測者影響且易出現(xiàn)誤記現(xiàn)象;光電門精度提高,但仍易誤記.以上兩法均無法獲得三線擺運動圖像等信息.針對傳統(tǒng)方法的改進已見諸報端[1-6],但安裝傳感器、磁化三線擺等做法會對其運動帶來影響;某些傳感器受限工作原理,所得圖像僅呈周期變化,無法揭示角度或位移與時間的關(guān)系;利用Phyphox或Tracker等軟件則需熟悉其使用技巧以及不同情況下生成數(shù)據(jù)的特征,不利推廣.

    鑒于以上原因,基于Python開發(fā)了一款軟件.實驗時在三線擺下盤貼上紅色標(biāo)志物,攝像頭模塊接入電腦并拍攝標(biāo)志物運動,在軟件內(nèi)利用OpenCV將視頻轉(zhuǎn)化為一系列運動數(shù)據(jù),利用FFT(快速傅里葉變換)和均值算法計算周期并以Matplotlib實時繪制圖像.此外基于Tkinter架構(gòu)了軟件數(shù)據(jù)表格,可輔助及引導(dǎo)學(xué)生完成數(shù)據(jù)處理和誤差分析;基于Pygame設(shè)計了實驗仿真系統(tǒng),可輔助學(xué)生學(xué)習(xí)實驗操作.

    1 設(shè)計方案

    1.1 圖像處理與數(shù)據(jù)可視化

    圖像處理捕捉標(biāo)志物的實現(xiàn)主要通過OpenCV的圖像二值化及輪廓識別等功能;計算周期則通過對均值點集作逐差及分析FFT頻譜兩種方法;數(shù)據(jù)可視化則以Matplotlib交互模式將已得數(shù)據(jù)實時繪圖展示.此外因Matplotlib動態(tài)響應(yīng)過長,故以多進程運行計算周期與數(shù)據(jù)可視.實現(xiàn)步驟如下:

    圖1 原始圖像

    以cvtColor函數(shù)將rgb通道改為hsv,并以inRange函數(shù)進行圖像二值化,其參數(shù)為顏色空間.以紅色為例,其hsv顏色空間為:色調(diào)156~180或0~10,飽和度43~255,明度46~255,處理后圖像如圖2所示.圖像二值化后還需適當(dāng)腐蝕噪點.

    圖2 二值化處理后圖像

    以findContours函數(shù)識別圖像全部輪廓并將其中面積最大者視為標(biāo)志物.求解該輪廓點集期望即得中心點坐標(biāo).記錄計算機實時時間并與中心點坐標(biāo)組合保存.在圖像中重新繪制輪廓、標(biāo)出中心點并寫入時間,并以imshow函數(shù)顯示(圖3左上角).

    圖3 處理過程實拍

    (2)計算周期.創(chuàng)建子進程并通過切片刷新共享內(nèi)存向其傳遞數(shù)據(jù).子進程中將位移均值歸零后以兩種算法計算周期.

    均值算法:設(shè)置“寬度”變量.遍歷數(shù)據(jù),判斷位移是否低于“寬度”,若是則以列表保存其對應(yīng)時間.對列表中相近部分取平均獲得近似均值點集,作逐差得周期.

    FFT:調(diào)用numpy.fft.fft函數(shù),參數(shù)為位移數(shù)據(jù),采樣周期為兩點時間差,返回值為頻譜數(shù)據(jù).取數(shù)據(jù)實部并遍歷尋出其最大或最小值點,其頻率即為振動頻率.

    (3)可視化數(shù)據(jù).在子進程中以Matplotlib.pyplot類的ion函數(shù)啟動交互,subplot函數(shù)分配圖像區(qū)間,plot函數(shù)繪制x-t、v-t、x-v和FFT頻譜圖像,text函數(shù)顯示周期和最小分度值(圖3).

    (4)結(jié)果呈現(xiàn).實測標(biāo)志物面積并通過一個輸入界面?zhèn)魅胲浖?軟件將實測面積與圖像中面積取比值并開方即得毫米單位與像素點單位的比率,進一步可得一系列擁有實際單位的數(shù)據(jù).不啟動交互繪制最終實驗圖像,并以csv格式導(dǎo)出全部數(shù)據(jù).

    1.2 操作及仿真界面

    數(shù)據(jù)表格界面需實現(xiàn)輸入、提示、數(shù)據(jù)擬合等功能,以稍底層的Tkinter架構(gòu),其它操作界面以easygui架構(gòu).實驗仿真界面則以游戲庫Pygame開發(fā).具體實現(xiàn)操作及仿真界面如下:

    1.2.1 數(shù)據(jù)表格等操作界面

    對于數(shù)據(jù)表格,創(chuàng)建兩個子進程并實例化窗口,在嵌套循環(huán)中生成并渲染Text控件并以StringVar變量跟蹤其輸入,組成輸入部分;以label控件顯示表格旁文字;以botton控件生成按鈕并設(shè)置command參數(shù)的關(guān)聯(lián)函數(shù),“refresh”按鍵關(guān)聯(lián)函數(shù)中將輸入數(shù)據(jù)保存在pkl文件中以實現(xiàn)數(shù)據(jù)保存,“tips”按鍵關(guān)聯(lián)函數(shù)中創(chuàng)建頂層窗口并顯示圖片以實現(xiàn)提示功能.表格和提示界面如圖4所示.

    圖4 數(shù)據(jù)表格和部分提示

    實驗時,在data表格中填入測量數(shù)據(jù),點擊“tips”獲取提示并在result表格中填寫計算結(jié)果.保存數(shù)據(jù)后,系統(tǒng)以in語句檢測數(shù)據(jù)中是否存在空字符串,若無則將字符串轉(zhuǎn)為浮點數(shù)并驗算數(shù)據(jù)處理及誤差分析結(jié)果,并以信息窗口逐個呈現(xiàn).此外考慮到“驗證平行軸定理”環(huán)節(jié)有表達式[7]

    (1)

    實驗需以線性擬合驗證T2-d2關(guān)系及截距,實現(xiàn)方案:調(diào)用numpy.polyfit函數(shù),參數(shù)為橫縱坐標(biāo)及擬合方程最高次冪,函數(shù)返回擬合方程及判據(jù)系數(shù).以plot函數(shù)繪制擬合曲線及散點.可通過判據(jù)系數(shù)及截距與理論值相對誤差驗證平行軸定理.

    其它操作界面都以調(diào)用easygui庫中函數(shù)來實現(xiàn).以系統(tǒng)主界面為例,調(diào)用choicebox函數(shù),其choices參數(shù)為各功能名稱的字符串,即得圖5般界面.

    圖5 主界面

    1.2.2 仿真實驗界面

    考慮Pygame底層性強,一些控件需提前繪制并架構(gòu).以箭頭按鈕和“游標(biāo)卡尺”為例.對于箭頭按鈕,創(chuàng)建Arbutton類對象,初始參數(shù)包括窗口及箭頭指向,箭頭本體以lines方法繪制;創(chuàng)建set方法在窗口中渲染箭頭,參數(shù)為箭尖坐標(biāo);創(chuàng)建isdown和isup方法,通過檢測鼠標(biāo)事件判斷箭頭按下或彈起.對于“游標(biāo)卡尺”(圖6),用繪圖軟件繪制主尺和分尺,仿真時導(dǎo)入圖片并將兩尺上下邊緣貼合渲染,主尺按既定“待測物”參數(shù)向左移動即可模擬讀數(shù).

    圖6 游標(biāo)卡尺仿真實驗

    界面架構(gòu)以“氣泡水準(zhǔn)儀”和“攝像頭調(diào)整”為例.“氣泡水準(zhǔn)儀”中,繪制并渲染3個大小顏色不同的圓充當(dāng)“底座”“中心環(huán)”和“氣泡”,組成虛擬氣泡水準(zhǔn)儀,其仿真實驗界面如圖7所示.實驗時操控一系列按鈕,“氣泡”根據(jù)按鈕事件進行移動;“攝像頭調(diào)整”(圖7)則以rectangle函數(shù)繪制長方形來模擬標(biāo)志物并捕捉鍵盤w、a、s、d響應(yīng)來模擬調(diào)整攝像頭操作.

    圖7 氣泡水準(zhǔn)儀與攝像頭調(diào)整實驗界面

    2 實驗

    電子天平稱量實驗中下盤質(zhì)量m0以及圓環(huán)的質(zhì)量m;游標(biāo)卡尺測量上盤半徑r、下盤半徑R及圓環(huán)內(nèi)徑d和外徑D.記錄完畢后用氣泡水準(zhǔn)器調(diào)整三線擺上、下圓盤水平,最后卷尺測量3根擺繩繩長h.攝像頭與電腦連接,在主界面“計算擺動周期”中點擊“攝像頭實時測量數(shù)據(jù)”,進入準(zhǔn)備界面.

    紅色標(biāo)志物貼于三線擺下圓盤側(cè)面,攝像頭正對標(biāo)志物并且拉開一定距離,如圖8所示.

    圖8 攝像頭對準(zhǔn)紅色標(biāo)志物

    擺動三線擺,注意擺角盡可能小并盡量避免橫擺.調(diào)整攝像頭使之清晰呈現(xiàn)出標(biāo)志物運動,按“Esc”鍵軟件開始記錄,生成動態(tài)圖像同時計算擺動周期等數(shù)據(jù).待80 s后自動停止記錄,保存數(shù)據(jù)并重復(fù)多次實驗.之后放上待測物,繼續(xù)重復(fù)多次實驗.

    3 實驗結(jié)果及分析

    為保證結(jié)果可對比,實驗時以軟件和秒表同時測量擺動周期.表1、表2為測量數(shù)據(jù).

    表1 其他物理量的測量結(jié)果

    表2 3種不同方法測得的周期、求得的轉(zhuǎn)動慣量及其相對誤差

    由上表, FFT所得轉(zhuǎn)動慣量數(shù)據(jù)的相對誤差較小.比較發(fā)現(xiàn)以FFT算法獲得的周期數(shù)據(jù)與其他組相比偏小,且空載圓盤轉(zhuǎn)動慣量的相對誤差明顯較大.

    三線擺圓盤轉(zhuǎn)動的同時還不可避免存在橫向擺動[1].某次實驗中[x-t圖像見圖9(a)]兩種頻率相近的振動相互疊加,出現(xiàn)了明顯的“拍”現(xiàn)象.而在由傅里葉變換所生成的頻譜圖像中,兩種不同頻率的波峰(或波谷)很容易區(qū)分.如圖9(b)所示,出現(xiàn)了1和2兩個頻率不同的波谷.

    (a)

    (b)圖9 某次實驗所得系列圖像

    一定條件下,三線擺圓盤轉(zhuǎn)動會與橫擺產(chǎn)生耦合[8],影響周期測量,可解釋空載圓盤轉(zhuǎn)動慣量相對誤差為何相比較大.

    4 結(jié)束語

    通過OpenCV采集三線擺運動數(shù)據(jù),其改進對三線擺運動幾乎無影響,且測量結(jié)果相比而言誤差較小,更具使用價值;通過Matplotlib實現(xiàn)了三線擺運動的圖像化,觀察到傳統(tǒng)實驗難以觀察到的現(xiàn)象,有助于培養(yǎng)學(xué)生從圖像和表格中發(fā)現(xiàn)問題的能力.以自制數(shù)據(jù)表格進行數(shù)據(jù)處理,方便整理且實現(xiàn)了實驗操作全程無紙化.基于Pygame搭建的二維實驗仿真系統(tǒng)有助學(xué)生學(xué)習(xí)實驗操作.

    猜你喜歡
    表格攝像頭繪制
    Art on coffee cups
    浙江首試公路非現(xiàn)場執(zhí)法新型攝像頭
    《現(xiàn)代臨床醫(yī)學(xué)》來稿表格要求
    攝像頭連接器可提供360°視角圖像
    統(tǒng)計表格的要求
    統(tǒng)計表格的要求
    統(tǒng)計表格的要求
    放學(xué)后
    童話世界(2018年17期)2018-07-30 01:52:02
    奔馳360°攝像頭系統(tǒng)介紹
    在轉(zhuǎn)變中繪制新藍圖
    讷河市| 册亨县| 贵溪市| 安吉县| 女性| 霍城县| 黄大仙区| 剑河县| 本溪| 新竹县| 深州市| 建宁县| 光山县| 五大连池市| 衡东县| 广宁县| 凤冈县| 丰原市| 成都市| 凯里市| 辉县市| 安溪县| 霞浦县| 濉溪县| 浦江县| 阳泉市| 吴旗县| 忻城县| 万安县| 虹口区| 五家渠市| 永顺县| 通化县| 西安市| 宿州市| 大埔区| 昭觉县| 平潭县| 台南县| 汉沽区| 通城县|