Python+OpenCV六種實(shí)時(shí)圖像處理詳細(xì)講解_第1頁(yè)
Python+OpenCV六種實(shí)時(shí)圖像處理詳細(xì)講解_第2頁(yè)
Python+OpenCV六種實(shí)時(shí)圖像處理詳細(xì)講解_第3頁(yè)
Python+OpenCV六種實(shí)時(shí)圖像處理詳細(xì)講解_第4頁(yè)
Python+OpenCV六種實(shí)時(shí)圖像處理詳細(xì)講解_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Python+OpenCV六種實(shí)時(shí)圖像處理詳細(xì)講解目錄1、導(dǎo)入庫(kù)文件2、設(shè)計(jì)GUI3、調(diào)用攝像頭4、實(shí)時(shí)圖像處理4.1、閾值二值化4.2、邊緣檢測(cè)4.3、輪廓檢測(cè)4.4、高斯濾波4.5、色彩轉(zhuǎn)換4.6、調(diào)節(jié)對(duì)比度5、退出系統(tǒng)初學(xué)OpenCV圖像處理的小伙伴肯定對(duì)什么高斯函數(shù)、濾波處理、閾值二值化等特性非常頭疼,這里給各位分享一個(gè)小項(xiàng)目,可通過(guò)攝像頭實(shí)時(shí)動(dòng)態(tài)查看各類圖像處理的特點(diǎn),也可對(duì)各位調(diào)參、測(cè)試有一定幫助。

1、導(dǎo)入庫(kù)文件

這里主要使用PySimpleGUI、cv2和numpy庫(kù)文件,PySimpleGUI庫(kù)文件實(shí)現(xiàn)GUI可視化,cv2庫(kù)文件是Python的OpenCV接口文件,numpy庫(kù)文件實(shí)現(xiàn)數(shù)值的轉(zhuǎn)換和運(yùn)算,均可通過(guò)pip導(dǎo)入。

importPySimpleGUIassg#pipinstallpysimplegui

importcv2#pipinstallopencv-python

importnumpyasnp#pipinstallnumpy

2、設(shè)計(jì)GUI

基于PySimpleGUI庫(kù)文件實(shí)現(xiàn)GUI設(shè)計(jì),本項(xiàng)目界面設(shè)計(jì)較為簡(jiǎn)單,設(shè)計(jì)800X400尺寸大小的框圖,淺綠色背景,主要由攝像頭界面區(qū)域和控制按鈕區(qū)域兩部分組成。效果如下所示:

GUI代碼如下所示:

#背景色

sg.theme('LightGreen')

#定義窗口布局

layout=[

[sg.Image(filename='',key='image')],

[sg.Radio('None','Radio',True,size=(10,1))],

[sg.Radio('threshold','Radio',size=(10,1),key='thresh'),

sg.Slider((0,255),128,1,orientation='h',size=(40,15),key='thresh_slider')],

[sg.Radio('canny','Radio',size=(10,1),key='canny'),

sg.Slider((0,255),128,1,orientation='h',size=(20,15),key='canny_slider_a'),

sg.Slider((0,255),128,1,orientation='h',size=(20,15),key='canny_slider_b')],

[sg.Radio('contour','Radio',size=(10,1),key='contour'),

sg.Slider((0,255),128,1,orientation='h',size=(20,15),key='contour_slider'),

sg.Slider((0,255),80,1,orientation='h',size=(20,15),key='base_slider')],

[sg.Radio('blur','Radio',size=(10,1),key='blur'),

sg.Slider((1,11),1,1,orientation='h',size=(40,15),key='blur_slider')],

[sg.Radio('hue','Radio',size=(10,1),key='hue'),

sg.Slider((0,225),0,1,orientation='h',size=(40,15),key='hue_slider')],

[sg.Radio('enhance','Radio',size=(10,1),key='enhance'),

sg.Slider((1,255),128,1,orientation='h',size=(40,15),key='enhance_slider')],

[sg.Button('Exit',size=(10,1))]

#窗口設(shè)計(jì)

window=sg.Window('OpenCV實(shí)時(shí)圖像處理',

layout,

location=(800,400),

finalize=True)

3、調(diào)用攝像頭

打開(kāi)電腦內(nèi)置攝像頭,將數(shù)據(jù)顯示在GUI界面上,效果如下所示:

代碼如下所示:

#打開(kāi)內(nèi)置攝像頭

cap=cv2.VideoCapture(0)

whileTrue:

event,values=window.read(timeout=0,timeout_key='timeout')

#實(shí)時(shí)讀取圖像

ret,frame=cap.read()

#GUI實(shí)時(shí)更新

imgbytes=cv2.imencode('.png',frame)[1].tobytes()

window['image'].update(data=imgbytes)

window.close()

4、實(shí)時(shí)圖像處理

4.1、閾值二值化

進(jìn)行閾值二值化操作,大于閾值values['thresh_slider']的,使用255表示,小于閾值values['thresh_slider']的,使用0表示,效果如下所示:

代碼如下所示:

ifvalues['thresh']:

frame=cv2.cvtColor(frame,cv2.COLOR_BGR2LAB)[:,:,0]

frame=cv2.threshold(frame,values['thresh_slider'],255,cv2.THRESH_BINARY)[1]

4.2、邊緣檢測(cè)

進(jìn)行邊緣檢測(cè),values['canny_slider_a']表示最小閾值,values['canny_slider_b']表示最大閾值,效果如下所示:

代碼如下所示:

ifvalues['canny']:

frame=cv2.Canny(frame,values['canny_slider_a'],values['canny_slider_b'])

4.3、輪廓檢測(cè)

輪廓檢測(cè)是形狀分析和物體檢測(cè)和識(shí)別的有用工具,連接所有連續(xù)點(diǎn)(沿著邊界)的曲線,具有相同的顏色或強(qiáng)度,效果如下所示:

代碼如下所示:

ifvalues['contour']:

hue=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)

hue=cv2.GaussianBlur(hue,(21,21),1)

hue=cv2.inRange(hue,np.array([values['contour_slider'],values['base_slider'],40]),

np.array([values['contour_slider']+30,255,220]))

cnts=cv2.findContours(hue,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[0]

cv2.drawContours(frame,cnts,-1,(0,0,255),2)

4.4、高斯濾波

進(jìn)行高斯濾波,(21,21)表示高斯矩陣的長(zhǎng)與寬都是21,標(biāo)準(zhǔn)差取values['blur_slider'],效果如下所示:

代碼如下所示:

ifvalues['blur']:

frame=cv2.GaussianBlur(frame,(21,21),values['blur_slider'])

4.5、色彩轉(zhuǎn)換

色彩空間的轉(zhuǎn)化,HSV轉(zhuǎn)換為BGR,效果如下所示:

代碼如下所示:

ifvalues['hue']:

frame=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)

frame[:,:,0]+=int(values['hue_slider'])

frame=cv2.cvtColor(frame,cv2.COLOR_HSV2BGR)

4.6、調(diào)節(jié)對(duì)比度

增強(qiáng)對(duì)比度,使圖像中的細(xì)節(jié)看起來(lái)更加清晰,效果如下所示:

代碼如下所示:

ifvalues['enhance']:

enh_val=values['enhance_slider']/40

clahe=cv2.createCLAHE(clipLimit=enh_val,tileGridSize=(8,8))

lab=cv2.cvtColor(frame,cv2.COLOR_BGR2LAB)

lab[:,:,0]=clahe.apply(lab[:,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論