




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
原始圖像鉛筆素描細(xì)節(jié)增強(qiáng)雙邊濾波器鉛筆邊緣卡通化圖像原始圖像鉛筆素描細(xì)節(jié)增強(qiáng)雙邊濾波器鉛筆邊緣圖3-1OpenCV程序設(shè)計(jì)圖3.3Web應(yīng)用程序設(shè)計(jì)思路Streamlit對(duì)Web應(yīng)用程序的開發(fā)設(shè)定了控件和選擇框,所以我們可以直接將Web的布局設(shè)計(jì)為:上傳圖像上傳圖像選擇濾波器滑動(dòng)條標(biāo)題原始圖像卡通化圖像圖3-1Web應(yīng)用程序設(shè)計(jì)圖
第四章程序?qū)崿F(xiàn)4.1圖像處理的程序?qū)崿F(xiàn)4.1.1“鉛筆素描”濾波器簡(jiǎn)單來說,鉛筆素描濾波器的主要用途是將原始圖像轉(zhuǎn)化為我們看到的傳統(tǒng)意義上用鉛筆畫出來的素描圖像。在這里我們將使用到下面的三行代碼將圖像轉(zhuǎn)化為類似于鉛筆素描的圖像:gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)gray_blur=cv2.GaussianBlur(gray,(25,25),0)cartoon=cv2.divide(gray,gray_blur,scale=250.0)通過上面的代碼我們可以看出,從最開始的原始圖像轉(zhuǎn)換為鉛筆素描的圖片只用到了非常簡(jiǎn)單的三行代碼,在代碼的第一行我們使用到了cvtColor()函數(shù),它是將圖像從一個(gè)顏色空間轉(zhuǎn)換為另一種顏色空間。在這里使用它是將彩色圖像進(jìn)行灰度處理,將圖像處理成灰度圖像??梢钥吹轿覀冏龅牟恢皇菍D片進(jìn)行灰度處理。想要獲取素描圖像更加關(guān)鍵的是提取圖像的邊緣,對(duì)圖像的邊緣進(jìn)行檢測(cè)。在邊緣檢測(cè)的過程中能夠大量削弱素描圖像中不需要體現(xiàn)出來的數(shù)據(jù),這一步將大大減少圖片的數(shù)據(jù)量,將最后需要被保留的圖片元素在素描圖像中顯示出來。而模糊作為圖像邊緣檢測(cè)的重要步驟之一,在這里也是必不可少的。在這部分我們用到了高斯模糊GaussianBlur對(duì)圖像進(jìn)行模糊處理。這一步實(shí)質(zhì)上是在減少圖像的噪點(diǎn),以及通過這一步的處理使得圖像變得平滑。在這里模糊圖像使用的是OpenCV中的GaussianBlur()函數(shù),其中第二個(gè)參數(shù)ksize中輸入(25,25),將它作為內(nèi)核大小,高斯模糊服從正態(tài)分布也叫做高斯分布的原理。因此核數(shù)與標(biāo)準(zhǔn)偏差以及模糊效果是成正比的。下圖體現(xiàn)的是內(nèi)核大小不同會(huì)產(chǎn)生不同的模糊效果:圖4-1不同內(nèi)核大小的模糊效果可以看到在最后一步中使用了cv2.divide()函數(shù),它是將原始灰度圖像gray和經(jīng)過GaussianBlur()處理后的灰度圖像gray_blur進(jìn)行相除。經(jīng)過相除之后的處理可以得到的是原始灰度圖像和模糊后的圖像之間相對(duì)應(yīng)像素的變化率,由此可以知道內(nèi)核數(shù)越大以及模糊效果越強(qiáng)時(shí),最后得到的像素值與之前像素值產(chǎn)生的差異就會(huì)變大,素描圖像呈現(xiàn)的效果就會(huì)更加清晰。下面是經(jīng)過內(nèi)核大小為25x25處理后的鉛筆素描圖像效果圖:圖4-2鉛筆素描過濾器實(shí)現(xiàn)效果4.1.2細(xì)節(jié)增強(qiáng)濾波器細(xì)節(jié)增強(qiáng)的目的就是將圖像中細(xì)節(jié)進(jìn)行銳化處理,加強(qiáng)邊緣細(xì)節(jié),然后將圖像顏色進(jìn)行平滑處理。下面是對(duì)圖片進(jìn)行細(xì)節(jié)增強(qiáng)效果的完整步驟:gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)gray_blur=cv2.medianBlur(gray,3)edges=cv2.adaptiveThreshold(gray_blur,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,9,9)color=cv2.detailEnhance(img,sigma_s=5,sigma_r=0.5)cartoon=cv2.bitwise_and(color,color,mask=edges)首先第一步與鉛筆素描一樣,先將圖像轉(zhuǎn)換為灰度圖像。但是第二步我選擇的是中值模糊medianBlur()函數(shù),中值模糊對(duì)消除椒鹽噪聲非常有效并且能夠保護(hù)圖像邊緣。中值濾波是采用類似于在圖像上掃描的形式使用指定大小的卷積核對(duì)圖像的像素值進(jìn)行掃描,指定卷積核內(nèi)的中值為中心像素點(diǎn)的值。接下來的一步是對(duì)圖像進(jìn)行邊緣檢測(cè)。我們將同時(shí)對(duì)圖像進(jìn)行自適應(yīng)閾值處理,選擇的是adaptiveThreshold()函數(shù)。在這里我們選擇的閾值計(jì)算方法是cv2.ADAPTIVE_THRESH_MEAN_C,它是將相鄰區(qū)域位置上的像素值的平均值作為閾值。用cv2.THRESH_BINARY對(duì)它進(jìn)行二值化操作,它是將高于閾值的部分取最大值處理,低于閾值的像素點(diǎn)取0處理。最后我們將得到一張只有圖像邊緣的圖。到此為止我們就完成了對(duì)圖像的邊緣進(jìn)行檢測(cè)。下面是自適應(yīng)閾值對(duì)模糊圖像產(chǎn)生的影響的效果對(duì)比圖:圖4-3自適應(yīng)閾值前后變化可以看到在代碼的第四步采用了OpenCV中使用detailEnhance()函數(shù)。detailEnhance()函數(shù)使用的目的是為了讓圖片看起來更清晰,但是在使用detailEnhance()函數(shù)時(shí),sigma_s、sigma_r的值需要被指定:sigma_s:用來控制鄰域的大小。鄰域大小的數(shù)值越高,鄰域則會(huì)越大。鄰域越大,過濾后的圖像越平滑。sigma_r:它為平滑圖像時(shí)保留邊緣做出了巨大貢獻(xiàn),用來控制鄰域內(nèi)的不同顏色的平均值。sigma_r很小時(shí)只處理顏色相差很小的部分,相差很大的顏色將保持不變。最后,根據(jù)掩碼mask對(duì)原始圖像與細(xì)節(jié)增強(qiáng)的結(jié)果進(jìn)行“與”操作,得到細(xì)節(jié)增強(qiáng)的結(jié)果圖,經(jīng)過這樣處理之后的圖像具有清晰的邊緣。下面是經(jīng)過細(xì)節(jié)增強(qiáng)處理后的效果:圖4-4細(xì)節(jié)增強(qiáng)濾波器實(shí)現(xiàn)效果4.1.3雙邊過濾器使用雙邊濾波器的優(yōu)點(diǎn)是,它可以平滑圖像和顏色,同時(shí)保留邊緣。下面是使用雙邊濾波器將原始圖像轉(zhuǎn)換為卡通化圖像的完整代碼:gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)gray_blur=cv2.medianBlur(gray,3)edges=cv2.adaptiveThreshold(gray_blur,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,9,9)color=cv2.bilateralFilter(img,5,5,25)cartoon=cv2.bitwise_and(color,color,mask=edges)可以很輕松的發(fā)現(xiàn)雙邊濾波器的步驟與細(xì)節(jié)增強(qiáng)濾波器的步驟非常接近,但雙邊濾波器中沒有重復(fù)使用detailEnhance()函數(shù),而是把眼光放在了OpenCV中的bilateralFilter()函數(shù)。bilateralFilter()函數(shù)在使用的時(shí)候傳遞的參數(shù)多加了一個(gè)d,它表示內(nèi)核大小。首先,我們需要指定圖像源,在這里用的是img,然后是設(shè)置d,sigma_s和sigma_r的值控制平滑效果,并且需要保護(hù)圖像邊緣。以下是經(jīng)過雙邊濾波器處理后的效果:圖4-4雙邊濾波器實(shí)現(xiàn)效果4.1.4鉛筆邊緣濾波器鉛筆邊緣濾波器是用來創(chuàng)建一個(gè)白色背景且只包括圖像重要邊緣的新圖像。以下是使用鉛筆邊緣濾波器處理圖像的完整代碼:gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)gray=cv2.medianBlur(gray,25)edges=cv2.Laplacian(gray,-1,ksize=3)edges_inv=255-edgesdummy,cartoon=cv2.threshold(edges_inv,150,255,cv2.THRESH_BINARY)從代碼上看,步驟幾乎沒有什么大的變化。第一步是將圖像進(jìn)行灰度處理。接下來,使用到的是中值模糊。在中值模糊之后,我們需要對(duì)圖像進(jìn)行邊緣檢測(cè),在這里使用的是Laplacian算子。內(nèi)核大小不同,Laplacian算子中的值是可以不同的。Laplacian算子實(shí)現(xiàn)的方法是對(duì)Sobel算子x和y進(jìn)行二階導(dǎo)之后對(duì)其求和。而Sobel算子是將像素進(jìn)行求導(dǎo),導(dǎo)數(shù)的極值位置就是圖像的邊緣。以下是經(jīng)過Laplacian濾波器處理前后的效果對(duì)比圖:圖4-4拉普拉斯濾波器應(yīng)用前后接下來是將經(jīng)過Laplacian算子處理后的結(jié)果取相反的值。最后,通過應(yīng)用OpenCV中的threshold()函數(shù),指定圖像閾值以及對(duì)大于閾值部分的像素值進(jìn)行指定,目的是將灰度圖像轉(zhuǎn)換為只有圖像邊緣圖像,這時(shí)的圖像是全黑或者全白的。以下是經(jīng)過鉛筆邊緣濾波器處理后的實(shí)現(xiàn)效果對(duì)比圖:圖4-4鉛筆邊緣濾波器實(shí)現(xiàn)效果為了使程序看起來更直觀,通常人們會(huì)習(xí)慣性將這四個(gè)濾波器放在一個(gè)函數(shù)里,這樣會(huì)讓代碼看起來更加的清晰。到現(xiàn)在,我們實(shí)現(xiàn)了對(duì)程序的基本設(shè)定,但是我們需要將程序的參數(shù)變得更加靈活。4.2Web應(yīng)用程序設(shè)計(jì)與實(shí)現(xiàn)在前面圖像處理的部分我們已經(jīng)實(shí)現(xiàn)了對(duì)圖像卡通化的硬編碼,在這一部分,我們將使用Streamlit來進(jìn)行Web應(yīng)用程序的創(chuàng)建。我們將圖像進(jìn)行卡通化的目的不僅僅是需要將圖像進(jìn)行簡(jiǎn)單的、固定模式的卡通化,這時(shí)我們需要用到Streamlit中提供的很多利于Web應(yīng)用程序搭建的函數(shù)。我們可以使用streamlit.slider()函數(shù),它的作用是創(chuàng)建一個(gè)滑塊。下面用鉛筆素描濾波器的部分進(jìn)行代碼演示:gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)scale_val=st.slider('調(diào)整素描的亮度(該值越高,素描越亮)',0.0,300.0,250.0)kernel=st.slider('調(diào)整素描邊緣的粗細(xì)(值越高,邊緣越粗)',1,99,25,step=2)gray_blur=cv2.GaussianBlur(gray,(kernel,kernel),0)cartoon=cv2.divide(gray,gray_blur,scale=scale_val)使用streamlit.slider()函數(shù)不光是為了創(chuàng)建滑塊,同時(shí)也創(chuàng)建了一個(gè)可以實(shí)時(shí)更新的圖像卡通化Web應(yīng)用程序平臺(tái)。當(dāng)每次改變內(nèi)核的值或者是改變另外的參數(shù)時(shí),圖像卡通化的結(jié)果都會(huì)在Web應(yīng)用程序上進(jìn)行實(shí)時(shí)反饋。我們需要將streamlit.slider()函數(shù)同時(shí)應(yīng)用到四個(gè)濾波器上,用它來代替固定的參數(shù)值。第二步,我們?cè)趥?cè)欄添加一個(gè)上傳圖片小插件。在這里,我選擇了使用Streamlit中的streamlit.sidebar.file_uploader()函數(shù)用于給用戶提供一個(gè)上傳圖片的組件,并將其放在側(cè)欄。以及我還使用了Streamlit中的streamlit.text()來添加文本或streamlit.write()為Web應(yīng)用程序添加分級(jí)標(biāo)題,使用streamlit.write()來設(shè)定標(biāo)題級(jí)別時(shí),采用的語法同Markdown一樣,是通過在標(biāo)題前添加一個(gè)或多個(gè)#,來進(jìn)行區(qū)分標(biāo)題的級(jí)別。用戶上傳圖像后,用戶可以根據(jù)自己的需要選擇合適的濾波器進(jìn)行圖像的卡通化處理。我將使用到streamlit.sidebar.selectbox()來創(chuàng)建側(cè)欄的選擇框。最后,我們需要在頁面上顯示原始圖像,并在用戶使用四個(gè)圖像卡通化濾波器中的任意一個(gè)濾波器對(duì)圖像進(jìn)行處理后,將卡通化圖像呈現(xiàn)在頁面上,這里我們考慮的是用Streamlit中的streamlit.image()函數(shù)來呈現(xiàn)。以便用戶清晰的看出他們是否要做進(jìn)一步的調(diào)整,使圖像達(dá)到自己滿意的程度。以下是整個(gè)Web應(yīng)用程序的效果圖:圖4-5Web應(yīng)用程序?qū)崿F(xiàn)效果到目前為止,Web應(yīng)用程序就已經(jīng)創(chuàng)建好了。4.3部署Web應(yīng)用程序到Heroku為了實(shí)現(xiàn)對(duì)圖像卡通化的推廣,我們選擇了將Web應(yīng)用程序部署到Heroku上以便他人的使用。Heroku提供了每周免費(fèi)的使用時(shí)長(zhǎng),這大大的給我們帶來了便利。我們可以進(jìn)入到Heroku的官網(wǎng)上注冊(cè)一個(gè)賬號(hào),注意郵箱要使用谷歌或者新浪郵箱。注冊(cè)成功后可以根據(jù)提示下載HerokuCLI。Heroku的使用需要將所有相關(guān)文件放入同一個(gè)文件目錄下,我們要?jiǎng)?chuàng)建三個(gè)文件分別是:requirements.txt:requirements是一個(gè)txt后綴的文件,它存放的是程序在運(yùn)行時(shí)所需要的包。在此程序中使用到了四個(gè)不同的庫(kù):opencv-python==6streamlit==0.63.0Pillow==7.0.0numpy==1.18.1setup.sh:這是一個(gè)shell文件。它是應(yīng)用于Heroku上進(jìn)行配置的腳本文件。我們通過為其編寫以下內(nèi)容來發(fā)揮它的作用:mkdir-p~/.streamlit/echo"\[general]\n\email=\"注冊(cè)時(shí)的郵箱地址\"\n\">~/.streamlit/credentials.tomlecho"\[server]\n\headless=true\n\enableCORS=false\n\port=$PORT\n\">~/.streamlit/config.tomlProcfile:此文件為無后綴的文本文件,在創(chuàng)建時(shí)不加任何后綴,否則在進(jìn)行配置時(shí)會(huì)報(bào)錯(cuò)。使用這個(gè)文件是為了讓Heroku知道文件的類型和種類,并且應(yīng)該怎么執(zhí)行這些文件。Procfile文件將編寫以下文件:web:shsetup.sh&&streamlitruncartoon.py接下來,我們還需要將這三個(gè)配置文件以及py文件放在同一個(gè)目錄下。到此為止我們已經(jīng)做好了萬全的準(zhǔn)備?,F(xiàn)在,我們可以打開cmd命令提示符,然后使用cd+文件路徑的命令將進(jìn)入到工作目錄下。在命令行中輸入命令herokulogin-i,在使用此命令時(shí)可以不用掛代理即可登陸到Heroku上。接下來,打開Heroku網(wǎng)頁,登陸到賬號(hào),創(chuàng)建一個(gè)新的app。圖4-6創(chuàng)建新的app圖然后,我們?yōu)樾碌腶pp取一個(gè)名字,我將它取名為cartoon-chen:圖4-7為app取名字這時(shí)我們可以根據(jù)Heroku網(wǎng)頁上的提示在命令提示符開始部署了。圖4-8、9部署Web應(yīng)用程序當(dāng)看到remote:Verifyingdeploydone.的字樣時(shí),說明上傳成功。這時(shí)你可以通過網(wǎng)頁右上角的Openapp開啟網(wǎng)站,還可以通過直接輸入網(wǎng)址/開啟網(wǎng)頁。
第五章總結(jié)與展望5.1總結(jié)本設(shè)計(jì)通過基于OpenCV實(shí)現(xiàn)對(duì)圖像的卡通化設(shè)計(jì),在加上Streamlit在Web端的實(shí)現(xiàn),最后到Heroku上部署,獲得能夠直接使用URL進(jìn)行訪問的Web應(yīng)用程序。通過這一段時(shí)間的努力,本次畢業(yè)設(shè)計(jì)的預(yù)期基本算是實(shí)現(xiàn)了。在論文撰寫的過程中,我的專業(yè)能力明顯比之前增強(qiáng)了很多。遇到阻礙時(shí),會(huì)先通過上網(wǎng)或者去圖書館等方式查閱相關(guān)資料,在經(jīng)過自己思考之后還存在疑慮時(shí),會(huì)尋求老師或者同學(xué)的幫助。雖然時(shí)不時(shí)會(huì)陷入心態(tài)爆炸的境地,但在總體上,我覺得自己還是很認(rèn)真的。在整個(gè)畢業(yè)論文的撰寫的過程中,我也盡量在將這件事做的更好。這次的畢業(yè)設(shè)計(jì),是一次嶄新的體驗(yàn),也是我學(xué)習(xí)的一個(gè)平臺(tái)。這次的畢業(yè)設(shè)計(jì)過程也是非常有趣的,最后能夠做出一個(gè)成品,也是很有成就感的,都是自己嘗試著親自動(dòng)手,親自去實(shí)踐,也體會(huì)到了理論與現(xiàn)實(shí)之間的差距所在,也是給了自己一個(gè)認(rèn)識(shí)和改變的機(jī)會(huì)。通過這次畢業(yè)設(shè)計(jì),我的思想覺悟和領(lǐng)悟力得到了很大的提升,特別是在遇到問題的時(shí)候分析解決問題的方式和能力上提升了很多,對(duì)于現(xiàn)代的大學(xué)生來說,其實(shí)實(shí)踐動(dòng)手能力才是最為重要的,而往往這種能力是課本上學(xué)習(xí)不到的,我們必須通過像畢業(yè)設(shè)計(jì)這種實(shí)踐活動(dòng),讓我們從書本走向?qū)嵺`。我的畢業(yè)設(shè)計(jì)也達(dá)到了專業(yè)學(xué)習(xí)的預(yù)期目的看到了自己身上許多不足以及需要及時(shí)改正的地方,有了這樣子的認(rèn)識(shí),我會(huì)在今后的學(xué)習(xí)和生活中多多加以改正和調(diào)整。5.2展望 圖像卡通化是一個(gè)看起來很簡(jiǎn)單,但操作起來非常需要耐心的程序。在時(shí)代的發(fā)展進(jìn)步之下,圖像處理的技術(shù)達(dá)到了日新月異的程度,因此它的應(yīng)用范圍也會(huì)越來越廣。當(dāng)今的卡通化也有不少未開墾的地方,它在試圖突破瓶頸不斷的完善自我,獲得更全面的應(yīng)用,帶來更佳的體驗(yàn)感。目前圖像卡通化似乎已經(jīng)呈現(xiàn)加速發(fā)展的趨勢(shì),各大新型的手機(jī)應(yīng)用程序的開發(fā);另一方面,即從技術(shù)方面加大對(duì)圖像處理行業(yè)算法的研究力度,不斷地更新?lián)Q代。因此,技術(shù)融合和應(yīng)用程序?qū)⒊v向繼續(xù)延伸。對(duì)于圖像處理來說,還處于需求帶動(dòng)技術(shù)發(fā)展的階段。但是,對(duì)于圖像卡通化來說,技術(shù)上采用更加成熟先進(jìn)的框架,直接升級(jí)圖像處理平臺(tái)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 行業(yè)調(diào)研報(bào)告撰寫指導(dǎo)手冊(cè)
- 品牌宣傳及社交媒體營(yíng)銷策劃書
- 空壓工安全培訓(xùn)考試題及答案解析
- 2025-2030化學(xué)發(fā)光診斷試劑集采預(yù)判與企業(yè)應(yīng)對(duì)預(yù)案報(bào)告
- 護(hù)理應(yīng)急梯隊(duì)題庫(kù)及答案解析
- 2025-2030化妝品功效型成分研發(fā)趨勢(shì)與原料供應(yīng)鏈安全評(píng)估專項(xiàng)報(bào)告
- 2025-2030動(dòng)力鋰電池隔膜材料技術(shù)路線與產(chǎn)能擴(kuò)張分析報(bào)告
- 2025-2030加濕器線上線下渠道融合營(yíng)銷模式深度解析
- 2025-2030制造業(yè)自動(dòng)化生產(chǎn)線升級(jí)競(jìng)爭(zhēng)格局分析市場(chǎng)盈利模式與行業(yè)技術(shù)發(fā)展趨勢(shì)報(bào)告
- 2025-2030凈水器市場(chǎng)產(chǎn)業(yè)鏈結(jié)構(gòu)及消費(fèi)者需求深度調(diào)研分析報(bào)告
- 初中歷史分層教學(xué)
- QHDCTS0001-2024中國(guó)電信移動(dòng)終端需求白皮書手持衛(wèi)星終端分冊(cè)(2024v1)
- 2025年家務(wù)服務(wù)員(初級(jí))職業(yè)技能鑒定參考試題庫(kù)(含答案)
- 兒童攝影員工管理規(guī)章制度
- 《法律職業(yè)倫理》課件-第二講 法官職業(yè)倫理
- 大學(xué)生勞動(dòng)教育概論知到智慧樹章節(jié)測(cè)試課后答案2024年秋南昌大學(xué)
- DB21T 3450-2021 危險(xiǎn)貨物港口企業(yè)生產(chǎn)安全事故應(yīng)急預(yù)案編制細(xì)則
- 【MOOC】英語寫作-西北工業(yè)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 婚宴廳入股合同范例
- 第五講鑄牢中華民族共同體意識(shí)-2024年形勢(shì)與政策
- 武術(shù)課課件教學(xué)課件
評(píng)論
0/150
提交評(píng)論