版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
計算機視覺項目開發(fā)實戰(zhàn)
(微課版)項目七視頻監(jiān)控—運動目標(biāo)檢測與跟蹤思維導(dǎo)圖學(xué)習(xí)目標(biāo)概覽能夠使用OpenCV實現(xiàn)視頻的基本操作知識目標(biāo)學(xué)習(xí)目標(biāo)素養(yǎng)目標(biāo)技能目標(biāo)培養(yǎng)科學(xué)精神與態(tài)度培養(yǎng)團隊協(xié)作與溝通能力培養(yǎng)信息安全與倫理意識能夠?qū)崿F(xiàn)背景差分法、幀間差分法,并應(yīng)用OpenCV的光流法進行運動目標(biāo)檢測能夠?qū)崿F(xiàn)基于MeanShift/CamShift、光流法、KCF算法等的目標(biāo)跟蹤理解MeanShift/CamShift、光流法、相關(guān)濾波及卡爾曼濾波等運動目標(biāo)跟蹤方法的基本原理及工作流程掌握視頻讀取、顯示、保存、剪輯與裁剪、幀率調(diào)整、預(yù)處理等視頻基本操作理解背景差分法、幀間差分法、光流法等運動目標(biāo)檢測方法的基本原理、適用場景及各自的優(yōu)缺點認知卡爾曼濾波的預(yù)測-更新雙階段工作模式目錄項目導(dǎo)入知識準(zhǔn)備項目拓展項目實施項目鞏固7.1視頻的基本操作7.2運動目標(biāo)檢測7.3運動目標(biāo)跟蹤PART01項目導(dǎo)入項目導(dǎo)入視頻監(jiān)控作為感知世界的“眼睛”,其動態(tài)分析能力正深刻影響著公共安全、智慧城市、人機交互等諸多關(guān)鍵領(lǐng)域。在開發(fā)和應(yīng)用目標(biāo)檢測與跟蹤技術(shù)時,既要追求算法性能的卓越與效率,以滿足復(fù)雜場景下的實時性要求;更要時刻秉持高度的科技倫理意識,勇?lián)鐣?zé)任。嚴(yán)格遵循隱私保護規(guī)范,警惕技術(shù)濫用風(fēng)險PART02知識準(zhǔn)備知識準(zhǔn)備—視頻的基本操作在計算機視覺與圖像處理應(yīng)用中,視頻處理(如實時監(jiān)控、視頻分析、數(shù)據(jù)采集與存儲)是極其常見且關(guān)鍵的任務(wù)。視頻本質(zhì)上是由一系列按固定幀率捕獲的圖像幀組成的連續(xù)數(shù)據(jù)流。要實現(xiàn)對視頻的有效控制和處理,開發(fā)者必須掌握如下基礎(chǔ)操作技能。視頻的獲取與輸出:涵蓋視頻讀取與播放、攝像頭視頻捕獲與顯示以及視頻保存(使用cv2.VideoCapture類和cv2.VideoWriter類)。視頻內(nèi)容的編輯:實現(xiàn)視頻剪輯與裁剪,提取所需片段或區(qū)域。視頻的性能優(yōu)化:進行視頻幀率調(diào)整,解決實時視頻處理中常見的分辨率與幀率不平衡問題。視頻的預(yù)處理:應(yīng)用基礎(chǔ)的圖像處理技術(shù)(如灰度化、縮放等)對視頻幀進行初步轉(zhuǎn)換。這些基礎(chǔ)操作是構(gòu)建更復(fù)雜視頻分析、理解和應(yīng)用系統(tǒng)的必要前提和核心支撐。知識準(zhǔn)備—視頻的基本操作7.1.1視頻讀取、顯示、保存視頻讀取與播放cv2.VideoCapture類是OpenCV中處理視頻流的核心類,其構(gòu)造函數(shù)與成員函數(shù)共同構(gòu)建了視頻操作的基礎(chǔ)框架。通過調(diào)用構(gòu)造函數(shù)cv2.VideoCapture(),可初始化視頻捕獲對象,實現(xiàn)對視頻文件的讀取。其語法格式如下:其中各參數(shù)含義如下。filename:要讀取的視頻文件名,支持相對路徑和絕對路徑。apiPreference:視頻捕獲要使用的API,可選項。<VideoCaptureobject>=cv2.VideoCapture(filename[,apiPreference])知識準(zhǔn)備—視頻的基本操作核心成員函數(shù)如表7-1所示。7.1.1視頻讀取、顯示、保存視頻讀取與播放知識準(zhǔn)備—視頻的基本操作常用的視頻屬性標(biāo)識(propId)如表7-2所示。7.1.1視頻讀取、顯示、保存視頻讀取與播放知識準(zhǔn)備—視頻的基本操作視頻讀取與播放—案例【例7-1】使用cv2.VideoCapture類播放視頻。根據(jù)題目要求,編寫代碼如下:7.1.1視頻讀取、顯示、保存知識準(zhǔn)備—視頻的基本操作視頻讀取與播放—案例【例7-1】使用cv2.VideoCapture類播放視頻。運行上述代碼后,播放視頻的窗口截圖如圖7-1所示。7.1.1視頻讀取、顯示、保存圖7-1例7-1代碼運行結(jié)果知識準(zhǔn)備—視頻的基本操作7.1.1視頻讀取、顯示、保存攝像頭視頻捕獲與顯示除了可以讀取視頻文件并進行播放和處理,cv2.VideoCapture()函數(shù)也可以實時捕獲攝像頭視頻。此時,該函數(shù)的參數(shù)為攝像頭ID。其語法格式如下:其中各參數(shù)含義如下。index:要打開的視頻捕獲設(shè)備的索引。0表示默認攝像頭(通常是內(nèi)置攝像頭);如果有多個攝像頭,則用0表示第1個攝像頭(默認攝像頭),用1表示第2個攝像頭,以此類推。apiPreference:視頻捕獲要使用的API,可選項。<VideoCaptureobject>=cv2.VideoCapture(index[,apiPreference])知識準(zhǔn)備—視頻的基本操作攝像頭視頻捕獲與顯示—案例【例7-2】使用cv2.VideoCapture類捕獲攝像頭視頻。根據(jù)題目要求,編寫代碼如下:7.1.1視頻讀取、顯示、保存知識準(zhǔn)備—視頻的基本操作攝像頭視頻捕獲與顯示—案例運行上述代碼后,將圖書放置在攝像頭前,捕獲攝像頭視頻的窗口截圖如圖7-2所示。7.1.1視頻讀取、顯示、保存圖7-2例7-2代碼運行結(jié)果【例7-2】使用cv2.VideoCapture類捕獲攝像頭視頻。知識準(zhǔn)備—視頻的基本操作7.1.1視頻讀取、顯示、保存視頻保存cv2.VideoWriter是OpenCV中實現(xiàn)視頻文件寫入的核心類,它提供了將圖像序列高效編碼為標(biāo)準(zhǔn)視頻格式的完整解決方案。OpenCV通過調(diào)用構(gòu)造函數(shù)cv2.VideoWriter(),創(chuàng)建視頻寫入對象。其語法格式如下:其中各參數(shù)含義如下。filename:輸出視頻文件的名稱(包括文件路徑和擴展名)。fourcc:視頻編/解碼類型。fps:創(chuàng)建的視頻的幀率。frameSize:視頻幀的大?。▽挾群透叨龋sColor:是否為彩色圖像。該值為非零值時,存儲彩色圖像;該值為零值時,存儲灰度圖像。<VideoWriterobject>=cv2.VideoWriter(filename,fourcc,fps,frameSize[,isColor]知識準(zhǔn)備—視頻的基本操作常用的視頻編碼格式如表7-3所示。7.1.1視頻讀取、顯示、保存視頻保存知識準(zhǔn)備—視頻的基本操作視頻保存—案例【例7-3】使用cv2.VideoWriter類保存攝像頭捕獲到的視頻。根據(jù)題目要求,編寫代碼如下:7.1.1視頻讀取、顯示、保存運行上述代碼,捕獲的攝像頭視頻內(nèi)容會被保存在名為“output.avi”的視頻文件中。知識準(zhǔn)備—視頻的基本操作7.1.2視頻剪輯與裁剪在計算機視覺應(yīng)用開發(fā)中,視頻剪輯與裁剪是常見的預(yù)處理操作,主要用于從原始視頻中提取關(guān)鍵片段或調(diào)整畫面內(nèi)容,以滿足后續(xù)分析、存儲或展示的需求。例如,在目標(biāo)檢測任務(wù)中,可能需要先裁剪視頻中的特定區(qū)域以減少計算量;在動作識別任務(wù)中,可能需要剪輯出包含關(guān)鍵動作的片段以提高模型效率。視頻剪輯的核心功能是按時間范圍提取視頻片段,而裁剪的核心功能是按空間區(qū)域提取畫面內(nèi)容。兩者結(jié)合可以實現(xiàn)靈活的視頻預(yù)處理,為后續(xù)的計算機視覺任務(wù)(如分類、檢測、跟蹤等)提供更精準(zhǔn)、更高效的數(shù)據(jù)輸入。知識準(zhǔn)備—視頻的基本操作其中各參數(shù)含義如下。propId:視頻屬性標(biāo)識。value:要設(shè)置的屬性值。retval=cv2.VideoCapture.set(propId,value)在視頻剪輯與裁剪的實現(xiàn)中,OpenCV的cv2.VideoCapture類提供了set()方法,用于將視頻跳轉(zhuǎn)到指定幀。其語法格式如下:7.1.2視頻剪輯與裁剪cv2.resize()函數(shù)用來調(diào)整圖像大小,確保裁剪后的幀符合輸出分辨率要求。知識準(zhǔn)備—視頻的基本操作【例7-4】提取視頻中第1~5s的片段,并裁剪視頻的中央?yún)^(qū)域。根據(jù)題目要求,編寫關(guān)鍵代碼如下:7.1.2視頻剪輯與裁剪—案例知識準(zhǔn)備—視頻的基本操作【例7-4】提取視頻中第1~5s的片段,并裁剪視頻的中央?yún)^(qū)域。運行本例的完整程序,視頻播放窗口的截圖如圖7-3所示。7.1.2視頻剪輯與裁剪—案例圖7-3例7-4程序運行結(jié)果知識準(zhǔn)備—視頻的基本操作7.1.3視頻幀率調(diào)整在實時視頻流處理中,圖像質(zhì)量與處理速度常需權(quán)衡。較高的分辨率能保留更多細節(jié),但會顯著增加計算負荷,可能導(dǎo)致單幀處理延遲。同時,維持高幀率對于實時交互與分析至關(guān)重要,若算力不足則會引起幀堆積。為優(yōu)化系統(tǒng)性能,實踐中常采用3類策略:動態(tài)調(diào)節(jié)分辨率與幀率、對ROI進行處理,以及實施幀率自適應(yīng)控制。OpenCV為此類優(yōu)化提供了完整的參數(shù)控制接口,核心方法是cv2.VideoCapture.set()與cv2.VideoCapture.get(),分別用于設(shè)置和獲取視頻的幀率與分辨率參數(shù)知識準(zhǔn)備—視頻的基本操作【例7-5】動態(tài)調(diào)整攝像頭的視頻幀率。根據(jù)題目要求,編寫關(guān)鍵代碼如下:7.1.3視頻幀率調(diào)整—案例知識準(zhǔn)備—視頻的基本操作【例7-5】動態(tài)調(diào)整攝像頭的視頻幀率。運行本例的完整程序,在視頻畫面上顯示當(dāng)前幀率和分辨率信息。程序根據(jù)當(dāng)前幀率與目標(biāo)幀率的比較,動態(tài)調(diào)整分辨率。7.1.3視頻幀率調(diào)整—案例本例提供了自適應(yīng)視頻處理框架,開發(fā)者可以通過修改target_fps值體驗不同目標(biāo)幀率下的表現(xiàn)。修改幀率調(diào)整閾值(0.7和1.3),觀察系統(tǒng)敏感度的變化。添加自己的圖像處理算法,觀察對幀率的影響。知識準(zhǔn)備—視頻的基本操作7.1.4視頻預(yù)處理灰度化灰度化是指將彩色圖像(通常為RGB或BGR格式)轉(zhuǎn)換為灰度圖像。通過灰度化處理,可將像素值經(jīng)由加權(quán)平均計算轉(zhuǎn)換為單通道灰度值,在保留邊緣、紋理等關(guān)鍵視覺特征的同時,將數(shù)據(jù)量減少約75%,從而顯著提高圖像處理速度。在OpenCV中,灰度轉(zhuǎn)換通過cv2.cvtColor()函數(shù)實現(xiàn),并需指定COLOR_BGR2GRAY參數(shù)。知識準(zhǔn)備—視頻的基本操作7.1.4視頻預(yù)處理縮放縮放是指改變圖像尺寸,包括放大(Upscale)和縮小(Downscale)。在圖像預(yù)處理中,縮放通常用于將圖像調(diào)整至所需尺寸,尤其在縮小圖像以提升處理效率方面應(yīng)用廣泛。在OpenCV中,圖像縮放通過cv2.resize()函數(shù)實現(xiàn)?;叶然c縮放是視頻預(yù)處理中的兩種關(guān)鍵操作,旨在顯著降低數(shù)據(jù)復(fù)雜度和提升處理效率。實際應(yīng)用中,常將灰度化與縮放連續(xù)使用,通過聯(lián)合降維和減少像素數(shù),達到最優(yōu)的加速與預(yù)處理效果。知識準(zhǔn)備—視頻的基本操作【例7-6】將視頻縮小到原來的1/4,并將縮放后的彩色幀轉(zhuǎn)換為灰度圖像。根據(jù)題目要求,編寫關(guān)鍵代碼如下:7.1.4視頻預(yù)處理—案例知識準(zhǔn)備—視頻的基本操作【例7-6】將視頻縮小到原來的1/4,并將縮放后的彩色幀轉(zhuǎn)換為灰度圖像。運行本例的完整程序,播放視頻的窗口截圖如圖7-4所示。7.1.4視頻預(yù)處理—案例圖7-4例7-6程序運行結(jié)果知識準(zhǔn)備—運動目標(biāo)檢測簡單背景建模:對歷史幀像素值進行統(tǒng)計建模,典型方法包括幀平均法和中值濾波法。自適應(yīng)背景建模:能夠動態(tài)更新背景模型以適應(yīng)環(huán)境變化,以高斯混合模型(GaussianMixtureModel,GMM)為代表。7.2.1背景差分法背景差分法是運動目標(biāo)檢測領(lǐng)域的經(jīng)典方法之一,其基本思想是通過建立場景的背景模型,并將當(dāng)前視頻幀與背景模型進行對比,從而分離出運動前景與靜態(tài)背景。該方法的性能高度依賴于背景模型的質(zhì)量和分割閾值的選取,這直接影響檢測結(jié)果的準(zhǔn)確性與魯棒性。根據(jù)背景建模方式的不同,背景差分法可分為簡單背景建模和自適應(yīng)背景建模兩類。知識準(zhǔn)備—運動目標(biāo)檢測簡單背景建模(幀平均法)簡單背景建模是背景差分法中的基礎(chǔ)方法,其基本假設(shè)是場景在短時間內(nèi)光照穩(wěn)定且無明顯動態(tài)變化。該方法通過分析視頻序列前N幀圖像的像素值,構(gòu)建初始背景模型,進而實現(xiàn)前景目標(biāo)的檢測。常用的平均方法包括以下兩種。算術(shù)平均:對N幀圖像中每一像素的亮度值直接求算術(shù)平均,即Background=(Frame1+Frame2+...+FrameN)/N加權(quán)平均:一種在線更新背景的方法,通過調(diào)整歷史背景與當(dāng)前幀的權(quán)重使背景模型能夠緩慢適應(yīng)場景變化。New_Background=(1-α)×Old_Background+α×Current_Frame7.2.1背景差分法在檢測階段,將當(dāng)前幀與背景模型逐像素比較,若差值超過設(shè)定閾值,則將該像素判定為前景目標(biāo)。知識準(zhǔn)備—運動目標(biāo)檢測簡單背景建模(幀平均法)OpenCV提供了cv2.accumulateWeighted()函數(shù)來實現(xiàn)加權(quán)平均背景建模。其語法格式如下:其中各參數(shù)含義如下。src:輸入圖像,可以是灰度圖像或彩色圖像。通常為8位或32位浮點類型。dst:累加器圖像,其大小和通道數(shù)與輸入圖像相同,但必須是32位或64位浮點類型。alpha:輸入圖像的權(quán)重(學(xué)習(xí)率)。mask:掩模,指定要更新的區(qū)域,可選項。如果不提供,則更新整個圖像。dst=cv2.accumulateWeighted(src,dst,alpha[,mask])7.2.1背景差分法知識準(zhǔn)備—運動目標(biāo)檢測簡單背景建模(幀平均法)—案例【例7-7】對監(jiān)控視頻進行加權(quán)平均背景建模和前景檢測。根據(jù)題目要求,編寫代碼如下:7.2.1背景差分法源代碼地址文件
ex7-7.py見教材配套代碼,路徑如下:src/proj07/ex7-7.py知識準(zhǔn)備—運動目標(biāo)檢測簡單背景建模(幀平均法)—案例【例7-7】對監(jiān)控視頻進行加權(quán)平均背景建模和前景檢測。運行上述代碼,結(jié)果如圖7-5所示。7.2.1背景差分法圖7-5例7-7程序運行結(jié)果知識準(zhǔn)備—運動目標(biāo)檢測高斯混合模型高斯混合模型是一種經(jīng)典的概率模型,其基本假設(shè)是數(shù)據(jù)由多個高斯分布組合而成。在背景建模任務(wù)中,GMM為每個像素建立了一個包含K(通常取3到5)個高斯分布的統(tǒng)計模型,能夠有效描述像素在不同時刻可能呈現(xiàn)的多種狀態(tài)。例如,同一個像素可能對應(yīng)多個分布:第一個表示陽光下的路面(亮度較高),第二個表示樹蔭下的路面(亮度較低),第三個則表示偶爾經(jīng)過的車輛顏色。通過為每個像素維護這樣一組高斯分布,該模型能夠更準(zhǔn)確地模擬現(xiàn)實場景中的復(fù)雜背景。每個分布都對應(yīng)一個權(quán)重,用于反映該分布與實際背景數(shù)據(jù)的匹配程度。權(quán)重越高,表示該分布所代表的背景狀態(tài)出現(xiàn)越頻繁。7.2.1背景差分法知識準(zhǔn)備—運動目標(biāo)檢測OpenCV提供了cv2.createBackgroundSubtractorMOG2()函數(shù)來實現(xiàn)GMM算法。其語法格式如下:其中各參數(shù)含義如下。history:用于訓(xùn)練背景模型的歷史幀數(shù),即“記憶長度”,默認為500幀。這個值越大,模型“記住”的歷史幀數(shù)越多,對變化越敏感,效果越穩(wěn)定。varThreshold:方差閾值,用于判斷像素是否與分布匹配。此值越小,對變化越敏感,更容易檢測出低對比度的目標(biāo),但也更容易產(chǎn)生噪聲。detectShadows:是否檢測并標(biāo)記陰影。如果將其設(shè)置為True,陰影會被檢測為灰色(通常為127),從而避免將移動陰影誤判為前景目標(biāo),提高了檢測準(zhǔn)確度。retval=cv2.createBackgroundSubtractorMOG2([,history[,varThreshold[,detectShadows]]])7.2.1背景差分法高斯混合模型知識準(zhǔn)備—運動目標(biāo)檢測該函數(shù)返回一個BackgroundSubtractorMOG2對象,其主要方法是apply()。其語法格式如下:其中各參數(shù)含義如下。image:輸入圖像,通常是每一幀視頻。fgmask:輸出的前景掩模(二值圖像)。learningRate:學(xué)習(xí)率,介于0和1之間,表示學(xué)習(xí)背景模型的速度。負值使算法使用一些自動選擇的學(xué)習(xí)率,0表示完全不更新背景模型,1表示完全用當(dāng)前幀重置背景模型。fgmask=cv2.BackgroundSubtractorMOG2.apply(image[,fgmask[,learningRate]])7.2.1背景差分法高斯混合模型知識準(zhǔn)備—運動目標(biāo)檢測高斯混合模型—案例【例7-8】使用OpenCV的MOG2進行實時運動目標(biāo)檢測。根據(jù)題目要求,編寫代碼如下:7.2.1背景差分法源代碼地址文件
ex7-8.py見教材配套代碼,路徑如下:src/proj07/ex7-8.py知識準(zhǔn)備—運動目標(biāo)檢測運行上述代碼,結(jié)果如圖7-6所示。7.2.1背景差分法圖7-6例7-8程序運行結(jié)果高斯混合模型—案例【例7-8】使用OpenCV的MOG2進行實時運動目標(biāo)檢測。知識準(zhǔn)備—運動目標(biāo)檢測7.2.2幀間差分法幀間差分法(FrameDifferenceMethod)因?qū)崿F(xiàn)簡單、計算效率高以及對環(huán)境光線變化具有較強的魯棒性,適合對實時性要求較高的應(yīng)用場景。核心思想:避開背景差分法中復(fù)雜的背景建模過程,轉(zhuǎn)而采用一種更輕量的策略:通過計算視頻序列中相鄰幀或隔幀之間的像素差異來識別運動區(qū)域?;炯僭O(shè):運動目標(biāo)所在的區(qū)域在相鄰幀間會出現(xiàn)明顯的灰度變化,而靜態(tài)背景區(qū)域的像素值則保持相對穩(wěn)定。與依賴背景建模的方法不同,幀間差分法無須維護長時間的背景模型,僅通過兩幀或三幀圖像之間的差分操作即可完成運動區(qū)域的初步提取。方法的局限性:容易在目標(biāo)內(nèi)部產(chǎn)生“空洞”——由于目標(biāo)區(qū)域顏色均勻?qū)е虏罘趾髢?nèi)部差異較??;同時,難以提取完整的運動目標(biāo)輪廓。因此,幀間差分法更適用于對檢測完整性要求不高但需高速處理的場景,如初步運動提示、簡單監(jiān)控報警等。知識準(zhǔn)備—運動目標(biāo)檢測兩幀差分法兩幀差分法是幀間差分法中最基礎(chǔ)的形式。其算法流程非常直觀,可分為以下幾個步驟。①圖像獲取:獲取視頻序列中連續(xù)的兩幀圖像,前一幀為,當(dāng)前幀為。②差分計算:計算這兩幀圖像對應(yīng)像素的絕對差值,公式如下。③閾值化:對差分圖像進行閾值化,區(qū)分運動區(qū)域與背景,公式如下。④后處理(可選):對二值圖像進行形態(tài)學(xué)操作(如開運算、閉運算),以抑制噪聲并填補“空洞”。實現(xiàn)兩幀差分法主要依賴兩個核心函數(shù):cv2.absdiff()和cv2.threshold()。cv2.absdiff()函數(shù)計算兩個數(shù)組(圖像)的絕對差值,cv2.threshold()函數(shù)則對灰度圖像進行閾值分割。7.2.2幀間差分法知識準(zhǔn)備—運動目標(biāo)檢測兩幀差分法—案例【例7-9】使用兩幀差分法進行實時運動目標(biāo)檢測。根據(jù)題目要求,編寫代碼如下:源代碼地址文件
ex7-9.py見教材配套代碼,路徑如下:src/proj07/ex7-9.py7.2.2幀間差分法知識準(zhǔn)備—運動目標(biāo)檢測運行上述代碼,結(jié)果如圖7-7所示。圖7-7例7-9代碼運行結(jié)果兩幀差分法—案例7.2.2幀間差分法【例7-9】使用兩幀差分法進行實時運動目標(biāo)檢測。知識準(zhǔn)備—運動目標(biāo)檢測三幀差分法三幀差分法是兩幀差分法的改進版,旨在緩解“空洞”問題。它同時利用連續(xù)的三幀圖像進行計算。其核心算法流程如下。①兩次差分:先計算第t-1幀與第t幀的差分圖像,再計算第t幀與第t+1幀的差分圖像。②閾值化:分別對和進行閾值化,得到兩個二值圖像和。③邏輯與操作:將兩個二值圖像進行邏輯“與”操作。7.2.2幀間差分法知識準(zhǔn)備—運動目標(biāo)檢測三幀差分法—案例【例7-10】使用三幀差分法進行實時運動目標(biāo)檢測。根據(jù)題目要求,編寫代碼如下:源代碼地址文件
ex7-10.py見教材配套代碼,路徑如下:src/proj07/ex7-10.py7.2.2幀間差分法知識準(zhǔn)備—運動目標(biāo)檢測運行上述代碼,結(jié)果如圖7-8所示。圖7-8例7-10代碼運行結(jié)果三幀差分法—案例7.2.2幀間差分法【例7-10】使用三幀差分法進行實時運動目標(biāo)檢測。知識準(zhǔn)備—運動目標(biāo)檢測7.2.3光流法背景差分法和幀間差分法能夠有效檢測視頻中的運動目標(biāo),實現(xiàn)前景與背景的分離。然而,這兩種方法僅能判斷“是否有運動”,而無法提供運動的具體信息,如運動方向和速度。光流(OpticalFlow)反映了視頻中像素的運動情況,可以將其理解為圖像中每個像素隨時間流動的軌跡。整體來看,光流就像一幅動態(tài)的矢量圖,其中每個箭頭代表一個像素的移動方向和距離,所有這些矢量共同勾畫出一幅畫面中的運動全景。光流法通常依賴以下幾個直觀的假設(shè)。①亮度恒定假設(shè):同一像素在連續(xù)幀中的亮度(或顏色)保持不變。②時間連續(xù)性/小運動假設(shè):目標(biāo)的運動幅度較小,位置在相鄰幀間不會發(fā)生劇烈變化。③空間一致性假設(shè):相鄰像素具有相似的運動方向與速度。知識準(zhǔn)備—運動目標(biāo)檢測7.2.3光流法稠密光流特別適合用于運動區(qū)域檢測。它可生成彩色光流圖,不同顏色代表不同運動方向,明暗則表示速度快慢,從而清晰展示運動物體的輪廓與內(nèi)部結(jié)構(gòu),為后續(xù)分析提供豐富信息。光流法主要可分為以下兩大類。稀疏光流:僅選取圖像中的某些特征明顯的點(如角點)計算光流,速度快、效率高,適用于實時跟蹤,經(jīng)典方法有Lucas-Kanade等。稠密光流:對圖像中每一個像素都計算運動矢量,能完整還原整體運動信息,但計算量大、耗時長,代表方法有Farneback和基于深度學(xué)習(xí)的FlowNet等。知識準(zhǔn)備—運動目標(biāo)檢測其中各參數(shù)含義如下。prev:輸入的前一幀圖像。next:輸入的后一幀圖像。flow:輸入的光流矢量場,其尺寸與前一幀圖像的尺寸相同。每個像素位置存儲的是一個二維矢量。pyr_scale:圖像金字塔縮放比例。levels:圖像金字塔的層數(shù)。flow=cv2.calcOpticalFlowFarneback(prev,next,flow,pyr_scale,levels,winsize,iterations,poly_n,poly_sigma,flags)OpenCV提供了cv2.calcOpticalFlowFarneback()函數(shù)來計算稠密光流。其語法格式如下:7.2.3光流法知識準(zhǔn)備—運動目標(biāo)檢測winsize:平均窗口大?。淳矸e核尺寸)。較大的值可以增強對圖像噪聲的魯棒性,但會使運動邊界變得模糊。通常設(shè)置為奇數(shù)。iterations:算法在每個金字塔層級上執(zhí)行的迭代次數(shù)。迭代次數(shù)越多,結(jié)果越精確,但計算時間越長。poly_n:用于多項式展開的像素鄰域大小,通常為5或7。較大的值意味著圖像將被近似為更平滑的表面,從而得到更穩(wěn)健的算法和更模糊的運動場。poly_sigma:多項式展開的高斯標(biāo)準(zhǔn)差。flags:操作標(biāo)志??梢允且韵轮档慕M合。7.2.3光流法計算得到的光流場是一個包含矢量數(shù)據(jù)的矩陣,無法直接顯示,需要將其轉(zhuǎn)換為人類可理解的彩色圖像。常見的做法是將矢量的角度(方向)映射為色相,將矢量的幅度(速度)映射為亮度。OpenCV提供了cv2.cartToPola()函數(shù)將光流場轉(zhuǎn)換為極坐標(biāo)(幅度和角度)。知識準(zhǔn)備—運動目標(biāo)檢測【例7-11】計算連續(xù)幀間的稠密光流,并實時顯示彩色的運動區(qū)域。根據(jù)題目要求,編寫代碼如下:7.2.3光流法—案例源代碼地址文件
ex7-11.py見教材配套代碼,路徑如下:src/proj07/ex7-11.py知識準(zhǔn)備—運動目標(biāo)檢測運行上述代碼,結(jié)果如圖7-9所示。圖7-9例7-11代碼運行結(jié)果7.2.3光流法—案例【例7-11】計算連續(xù)幀間的稠密光流,并實時顯示彩色的運動區(qū)域。知識準(zhǔn)備—運動目標(biāo)檢測7.2.3光流法背景差分法、幀間差分法和光流法是運動目標(biāo)檢測中的3種核心傳統(tǒng)方法。它們原理各異、各有優(yōu)劣,并分別適用于不同的應(yīng)用場景。在運動目標(biāo)檢測中,并不存在一種普遍適用的方法,最佳選擇取決于具體的攝像頭配置、性能需求與環(huán)境條件等諸多因素。表7-4針對這3種運動目標(biāo)檢測方法進行了詳細的對比分析。傳統(tǒng)運動目標(biāo)檢測方法以像素級操作為主,通過統(tǒng)計建模或運動假設(shè)實現(xiàn)前景檢測。隨著深度學(xué)習(xí)的發(fā)展,基于CNN的目標(biāo)檢測算法(如YOLO)逐漸成為主流,但傳統(tǒng)方法在資源受限場景(如嵌入式設(shè)備)中仍具有不可替代性。知識準(zhǔn)備—運動目標(biāo)跟蹤運動目標(biāo)跟蹤(MotionTargetTracking)是計算機視覺領(lǐng)域的核心任務(wù)之一,其目標(biāo)是在視頻序列中持續(xù)定位目標(biāo)對象的位置與狀態(tài),并建立其隨時間變化的運動軌跡。4類主流的運動目標(biāo)跟蹤方法:MeanShift/CamShift、光流法、相關(guān)濾波和卡爾曼濾波。更為復(fù)雜的挑戰(zhàn),包括目標(biāo)外觀的縮放、旋轉(zhuǎn)與非剛性形變,光照條件的劇烈變化,部分或完全遮擋導(dǎo)致的目標(biāo)短暫消失,背景中相似物體的干擾(混淆),以及因快速運動導(dǎo)致的運動模糊等。運動目標(biāo)跟蹤的核心挑戰(zhàn)在于如何為這些離散的觀測點建立持續(xù)、穩(wěn)定且具有身份標(biāo)識(ID)的時空關(guān)聯(lián),從而為高層語義理解提供豐富的時序上下文。知識準(zhǔn)備—運動目標(biāo)跟蹤7.3.1MeanShift/CamShiftMeanShift算法的核心思想是通過迭代尋找概率密度分布的局部極大值來定位目標(biāo)。算法假設(shè)目標(biāo)具有獨特的顏色分布,并在初始幀中建立其顏色直方圖。在后續(xù)幀中,首先通過反向投影生成顏色概率分布圖,隨后MeanShift算法從上一幀的位置開始,沿概率密度梯度逐步移動搜索窗口,最終收斂至目標(biāo)最可能出現(xiàn)的新區(qū)域。算法的優(yōu)勢在于無須預(yù)設(shè)運動模型,對目標(biāo)形變和部分遮擋具有一定的魯棒性,且計算效率高,適用于實時處理。然而,其固定大小的搜索窗口難以適應(yīng)目標(biāo)尺度的變化,這限制了其在復(fù)雜場景中的應(yīng)用。知識準(zhǔn)備—運動目標(biāo)跟蹤7.3.1MeanShift/CamShiftCamShift算法在MeanShift算法的基礎(chǔ)上引入了窗口自適應(yīng)方法。它在每一幀調(diào)用MeanShift算法,根據(jù)所定位區(qū)域的顏色概率分布動態(tài)調(diào)整搜索窗口的尺寸和形狀。CamShift算法能夠有效應(yīng)對目標(biāo)尺度縮放和旋轉(zhuǎn),顯著提升了跟蹤的穩(wěn)定性與適應(yīng)性。兩種算法均依賴顏色直方圖作為特征表示,通常在HSV色彩空間中計算,以減少光線變化的影響。OpenCV提供了完整的函數(shù)支持,可通過cv2.calcHist()函數(shù)生成目標(biāo)直方圖模型,利用cv2.calcBackProject()函數(shù)將當(dāng)前幀轉(zhuǎn)換為概率分布圖,最終通過調(diào)用cv2.meanShift()函數(shù)或cv2.CamShift()函數(shù)實現(xiàn)跟蹤。知識準(zhǔn)備—運動目標(biāo)跟蹤MeanShift/CamShift以顏色直方圖為目標(biāo)特征表示。OpenCV提供了cv2.calcHist()函數(shù)計算HSV色彩空間中色相(H)通道的直方圖。其語法格式如下:其中部分參數(shù)含義如下。images:輸入圖像的列表。所有圖像必須具有相同的深度和相同的尺寸。channels:用于計算直方圖的通道索引。mask:掩模。與輸入圖像同尺寸,非零區(qū)域參與統(tǒng)計。histSize:每個通道的直方圖bin的數(shù)量,即表示分成多少個區(qū)間。ranges:每個通道的像素值范圍。accumulate:是否累加到現(xiàn)有直方圖,默認為False。hist=cv2.calcHist(images,channels,mask,histSize,ranges[,hist[,accumulate]])目標(biāo)模型構(gòu)建:顏色直方圖計算7.3.1MeanShift/CamShift知識準(zhǔn)備—運動目標(biāo)跟蹤反向投影將當(dāng)前幀像素映射到目標(biāo)模型的概率值,生成灰度概率分布圖。OpenCV提供了cv2.calcBackProject()函數(shù)來實現(xiàn)這個操作。其語法格式如下:其中部分參數(shù)含義如下。images:輸入圖像的列表。所有圖像必須具有相同的深度和相同的尺寸。channels:用于計算反向投影的通道索引列表。hist:輸入直方圖,可以是密集的或稀疏的。ranges:每個通道的像素值范圍。對于HSV色彩空間的H通道,其像素值范圍通常是[0,180]。scale:輸出反向投影圖的縮放因子。dst=cv2.calcBackProject(images,channels,hist,ranges,scale[,dst])反向投影映射:概率分布圖生成7.3.1MeanShift/CamShift知識準(zhǔn)備—運動目標(biāo)跟蹤cv2.meanShift()函數(shù)用于執(zhí)行均值漂移迭代,返回目標(biāo)的新位置和搜索窗口。其語法格式如下:其中參數(shù)含義如下。probImage:反向投影圖。window:初始搜索窗口(x,y,w,h),表示矩形區(qū)域的左上角坐標(biāo)和寬高。除第1幀,這個窗口的初始位置是上一幀成功跟蹤到目標(biāo)的位置。criteria:迭代終止條件。retval,window=cv2.meanShift(probImage,window,criteria)MeanShift核心迭代:目標(biāo)定位7.3.1MeanShift/CamShift知識準(zhǔn)備—運動目標(biāo)跟蹤CamShift通過cv2.CamShift()函數(shù)返回旋轉(zhuǎn)矩形,自動適應(yīng)目標(biāo)尺度變化。其語法格式如下:retval,window=cv2.CamShift(probImage,window,criteria)CamShift動態(tài)窗口調(diào)整7.3.1MeanShift/CamShiftcv2.CamShift()函數(shù)的參數(shù)與cv2.meanShift()函數(shù)的參數(shù)完全一致,但其內(nèi)部行為不同,返回值也有區(qū)別。知識準(zhǔn)備—運動目標(biāo)跟蹤7.3.1MeanShift/CamShift表7-5對cv2.meanShift()和cv2.CamShift()進行了對比。知識準(zhǔn)備—運動目標(biāo)跟蹤【例7-12】通過MeanShift和CamShift算法進行目標(biāo)跟蹤。根據(jù)題目要求,編寫關(guān)鍵代碼如下:7.3.1MeanShift/CamShift—案例源代碼地址文件
ex7-12.py見教材配套代碼,路徑如下:src/proj07/ex7-12.py知識準(zhǔn)備—運動目標(biāo)跟蹤運行本例的完整代碼,結(jié)果如圖7-10所示。圖7-10例7-12代碼運行結(jié)果7.3.1MeanShift/CamShift—案例【例7-12】通過MeanShift和CamShift算法進行目標(biāo)跟蹤。知識準(zhǔn)備—運動目標(biāo)跟蹤7.3.2光流法光流法可分為稠密光流與稀疏光流兩類方法。稠密光流(如Farneback算法)通過逐像素計算運動矢量,生成完整的運動場,能夠清晰展示場景中運動目標(biāo)的輪廓與方向,適用于運動區(qū)域檢測等需要全局運動信息的任務(wù)。然而,其計算復(fù)雜度高,對噪聲和光線變化較為敏感,在對實時性要求高的場景中難以應(yīng)用。稀疏光流以KLT(Kanade-Lucas-Tomasi)特征跟蹤算法為代表,僅選取圖像中紋理顯著的特征點(如角點)進行跟蹤,顯著降低了計算負擔(dān),更適合實時跟蹤任務(wù)??傮w而言,稠密光流適用于需要全局運動信息的應(yīng)用(如群體運動分析),而KLT稀疏光流更側(cè)重于高效、精確地跟蹤關(guān)鍵特征點軌跡,適用于對實時性要求較高的復(fù)雜視覺任務(wù)。與基于顏色特征的MeanShift/CamShift相比,KLT不依賴色彩分布,從而在目標(biāo)外觀變化明顯的場景中表現(xiàn)優(yōu)異。知識準(zhǔn)備—運動目標(biāo)跟蹤其中部分參數(shù)含義如下。prevImg:第1個輸入圖像或金字塔。nextImg:與prevImg大小和類型相同的第2個輸入圖像或金字塔。prevPts:前一幀中需要跟蹤的光流的特征點坐標(biāo),特征點坐標(biāo)必須是單精度浮點數(shù)。winSize:每個金字塔層的搜索窗口的大小。maxLevel:最大金字塔層數(shù);如果將其設(shè)置為0,則不使用金字塔(單層),如果將其設(shè)置為1,則使用兩層,以此類推。nextPts,status,err=cv2.calcOpticalFlowPyrLK(prevImg,nextImg,prevPts,nextPts[,status[,err[,winSize[,maxLevel[,criteria[,flags[,minEigThreshold]]]]]]])OpenCV提供了高效且易用的KLT光流實現(xiàn)功能,主要通過cv2.calcOpticalFlowPyrLK()函數(shù)來完成。其語法格式如下:7.3.2光流法成功的KLT跟蹤很大程度上取決于良好的特征點選擇。OpenCV提供了多種特征檢測器來選擇適合跟蹤的點,例如用于Shi-Tomasi角點檢測的cv2.goodFeaturesToTrack()函數(shù)。知識準(zhǔn)備—運動目標(biāo)跟蹤【例7-13】設(shè)計KLT光流跟蹤程序,實現(xiàn)特征點檢測、光流計算和軌跡繪制。根據(jù)題目要求,編寫代碼如下:7.3.2光流法—案例源代碼地址文件
ex7-13.py見教材配套代碼,路徑如下:src/proj07/ex7-13.py知識準(zhǔn)備—運動目標(biāo)跟蹤運行本例的完整代碼,結(jié)果如圖7-11所示。圖7-11例7-13代碼運行結(jié)果7.3.2光流法—案例【例7-13】設(shè)計KLT光流跟蹤程序,實現(xiàn)特征點檢測、光流計算和軌跡繪制。知識準(zhǔn)備—運動目標(biāo)跟蹤7.3.3相關(guān)濾波與依賴顏色直方圖的MeanShift/CamShift和基于像素運動估計的光流法不同,相關(guān)濾波(CorrelationFiltering)將跟蹤問題轉(zhuǎn)化為一個判別性分類任務(wù):通過訓(xùn)練一個濾波器模板,使其在目標(biāo)區(qū)域響應(yīng)最大,從而實現(xiàn)快速定位。核心思想源自信號處理中的互相關(guān)計算,通過濾波器與圖像區(qū)域在頻域的卷積,高效地搜索最相似區(qū)域。相比傳統(tǒng)跟蹤方法,相關(guān)濾波在多個方面表現(xiàn)出明顯優(yōu)勢,部分如下。與MeanShift/CamShift相比:相關(guān)濾波借助頻域計算與核方法,提升了對光線變化和背景干擾的魯棒性,同時能夠有效應(yīng)對目標(biāo)的尺度變化。與光流法相比:相關(guān)濾波無須依賴稀疏特征點,可在稠密圖像上進行全局搜索,對快速運動及目標(biāo)外觀變化具備更強的適應(yīng)能力。知識準(zhǔn)備—運動目標(biāo)跟蹤7.3.3相關(guān)濾波OpenCV在其tracking模塊中提供了經(jīng)典和廣泛使用的核相關(guān)濾波器(KernelCorrelationFilter,KCF)算法的實現(xiàn)。其基本步驟如下。①創(chuàng)建跟蹤器對象。用cv2.TrackerKCF_create()函數(shù)創(chuàng)建KCF跟蹤器對象,支持參數(shù)(如核類型、特征類型)配置。②初始化跟蹤器。讀取視頻的第一幀,并指定一個初始的邊界框來定義要跟蹤的目標(biāo)。OpenCV提供了cv2.Tracker.init()函數(shù)來完成。其語法格式如下:retval=cv2.Tracker.init(image,boundingBox)其中參數(shù)含義如下。image:初始幀,在此幀中指定要跟蹤的目標(biāo)。boundingBox:初始邊界框。知識準(zhǔn)備—運動目標(biāo)跟蹤7.3.3相關(guān)濾波③更新跟蹤器。在后續(xù)的視頻幀中,調(diào)用cv2.Tracker.update()函數(shù)來更新跟蹤器并獲取目標(biāo)的新位置。如果跟蹤成功,返回一個表示目標(biāo)位置的更新后的邊界框。其語法格式如下:retval,boundingBox=cv2.Tracker.update(image)其中參數(shù)含義如下。image:當(dāng)前幀,跟蹤器將在此幀中尋找目標(biāo)。boundingBox:表示新目標(biāo)位置的邊界框,如果返回值為true,則不進行修改。知識準(zhǔn)備—運動目標(biāo)跟蹤【例7-14】通過KCF算法進行目標(biāo)跟蹤。根據(jù)題目要求,編寫關(guān)鍵代碼如下:7.3.3相關(guān)濾波—案例源代碼地址文件
ex7-14.py見教材配套代碼,路徑如下:src/proj07/ex7-14.py知識準(zhǔn)備—運動目標(biāo)跟蹤【例7-14】通過KCF算法進行目標(biāo)跟蹤。運行本例的完整代碼,結(jié)果如圖7-12所示。7.3.3相關(guān)濾波—案例圖7-12例7-14代碼運行結(jié)果知識準(zhǔn)備—運動目標(biāo)跟蹤7.3.4卡爾曼濾波MeanShift/CamShift、光流法及相關(guān)濾波等運動目標(biāo)跟蹤方法共同面臨難題:目標(biāo)被短暫遮擋、有檢測噪聲以及運動不確定性??柭鼮V波(KalmanFiltering)憑借其在運動建模與觀測融合方面的優(yōu)勢,能夠有效彌補傳統(tǒng)跟蹤方法在應(yīng)對不確定性、遮擋與噪聲等方面的不足。它并非獨立的跟蹤器,而是通過系統(tǒng)的動態(tài)模型和不確定的觀測值,對目標(biāo)狀態(tài)進行預(yù)測與修正,從而在目標(biāo)跟蹤中發(fā)揮關(guān)鍵作用。核心思想基于兩個基本概念:預(yù)測(依據(jù)系統(tǒng)模型進行狀態(tài)推算)和更新(利用觀測值對狀態(tài)進行修正)。算法以遞歸方式不斷優(yōu)化對目標(biāo)狀態(tài)的估計,在統(tǒng)計意義下達到最優(yōu),且無須保存大量歷史數(shù)據(jù),僅依賴前一時刻的狀態(tài)估計和當(dāng)前觀測即可完成當(dāng)前時刻的最優(yōu)估計。知識準(zhǔn)備—運動目標(biāo)跟蹤其中部分參數(shù)含義如下。dynamParams:狀態(tài)向量維度。measureParams:觀測向量維度。controlParams:控制向量維數(shù)。type:創(chuàng)建的矩陣類型。<KalmanFilterobject>=cv2.KalmanFilter(dynamParams,measureParams[,controlParams[,type]])OpenCV提供了cv2.KalmanFilter()函數(shù)來創(chuàng)建卡爾曼濾波器。其語法格式如下:7.3.4卡爾曼濾波知識準(zhǔn)備—運動目標(biāo)跟蹤其中部分參數(shù)含義如下。control:控制輸入向量,維度需與controlParams一致,可選項。retval:返回預(yù)測的狀態(tài)向量,維度與dynamParams相同。retval=cv2.KalmanFilter.predict([,control])KalmanFilter.predict()函數(shù)是卡爾曼濾波的核心之一,通過狀態(tài)轉(zhuǎn)移矩陣和當(dāng)前狀態(tài),計算下一時刻的先驗狀態(tài)估計(系統(tǒng)狀態(tài));更新誤差協(xié)方差矩陣,反映預(yù)測的不確定性。其語法格式如下:7.3.4卡爾曼濾波知識準(zhǔn)備—運動目標(biāo)跟蹤【例7-15】融合卡爾曼濾波器的KCF目標(biāo)跟蹤。根據(jù)題目要求,編寫代碼如下:源代碼地址文件
ex7-15.py見教材配套代碼,路徑如下:src/proj07/ex7-15.py7.3.4卡爾曼濾波知識準(zhǔn)備—運動目標(biāo)跟蹤【例7-15】融合卡爾曼濾波器的KCF目標(biāo)跟蹤。運行本例的完整代碼,結(jié)果如圖7-13所示。7.3.4卡爾曼濾波圖7-13例7-15代碼運行結(jié)果PART03項目實施項目實施項目任務(wù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 秋冬頭皮出油頭屑增多科學(xué)護理方法
- 2026 年夏季護理學(xué)生謹(jǐn)防證書代辦虛假詐騙宣講課
- 2026 年產(chǎn)科高危妊娠孕產(chǎn)婦精細化護理分享
- 2026 年疼痛護理??茙Ы探虒W(xué)實踐課件
- 2026年內(nèi)分泌科護理服務(wù)專項查房
- 湖南銀行2026年長沙地區(qū)縣域支行專場招聘筆試歷年典型考題及考點剖析附帶答案詳解
- 銀行從業(yè)資格考試歷年試題及答案
- 團體標(biāo)準(zhǔn)《地理標(biāo)志農(nóng)產(chǎn)品 南丹苞谷李》(征求意見稿)
- 2026年《花卉學(xué)》期末考試綜合提升試卷及答案詳解(名校卷)
- 2026年部編版新教材語文四年級上冊期中檢測題及答案
- 2026年云南省地礦測繪院有限公司招聘(37人)筆試備考試題及答案詳解
- 環(huán)衛(wèi)車輛更新改造項目可行性研究報告
- GB/Z 160-2025電氣簡圖用圖形符號IEC 60617標(biāo)準(zhǔn)化設(shè)計指南
- XXX公司2026年度安全生產(chǎn)資金投入計劃(安全生產(chǎn)資金投入制度)
- 2026屆云南省紅河州、文山州第四次州統(tǒng)測預(yù)測歷史試題(含答案)
- 巨幼細胞性貧血診療指南(2025年版)
- 2026年留疆戰(zhàn)士考試題庫及答案含解析
- 2026光伏組件回收技術(shù)突破與循環(huán)經(jīng)濟產(chǎn)業(yè)鏈構(gòu)建白皮書
- 沙雅縣2026年古勒巴格鎮(zhèn)示范村人居環(huán)境整治項目水土保持方案報告表
- 雙湖縣公務(wù)員考試公共基礎(chǔ)知識試題庫(含答案)
- 子宮內(nèi)膜息肉的護理
評論
0/150
提交評論