Python中的OpenCV圖像閾值處理和平滑處理詳解
一、圖像的閾值處理
ret, dst = cv2.threshold(src=,thresh=,maxval=,type=)
- dst:輸出圖
- src:輸入圖,只能是單通道圖像,通常來(lái)說(shuō)為灰度圖
- thresh:閾值
- maxval:當(dāng)像素值超過(guò)了閾值(或者小于閾值,根據(jù)type來(lái)決定),所賦予的值
- type:二值化操作的類型和,包含以下五種
- cv2.THRESH_BINARY 超過(guò)閾值部分取maxval(最大值),否則0
- cv2.THRESH_BINARY_INV 小于閾值部分取maxval(最大值) 否則0
- cv2.THRESH_TRUNC 大于閾值部分設(shè)為閾值,否則不變
- cv2.THRESH_TOZERO 大于閾值部分不改變,否則設(shè)為0
- cv2.THRESH_TOZERO_INV 小于閾值部分不改變嗎,否則設(shè)為0
import cv2 img_h = cv2.imread(r"C:\Users\admin\Desktop\yy.jpg", cv2.IMREAD_GRAYSCALE) # 超過(guò)閾值部分取maxval(最大值),否則0 ret1,img1 = cv2.threshold(img_h,127,255,cv2.THRESH_BINARY) # 小于閾值部分取maxval(最大值) 否則0 ret2,img2 = cv2.threshold(img_h,127,255,cv2.THRESH_BINARY_INV) # 大于閾值部分設(shè)為閾值,否則不變 ret3,img3 = cv2.threshold(img_h,127,255,cv2.THRESH_TRUNC) # 大于閾值部分不改變,否則設(shè)為0 ret4,img4 = cv2.threshold(img_h,127,255,cv2.THRESH_TOZERO) # 小于閾值部分不改變嗎,否則設(shè)為0 ret5,img5 = cv2.threshold(img_h,127,255,cv2.THRESH_TOZERO_INV) titles = ["ORIGINAL", "BINARY", "BINARY_INV", "TRUNC", "TOZERO", "TOZERO_INV"] imgs = [img_h,img1,img2,img3,img4,img5] for i in range(6): plt.subplot(2,3,i+1),plt.imshow(imgs[i],"gray") plt.title(titles[i]) plt.xticks([]), plt.yticks([]) plt.show()
效果如下
二、圖像的平滑處理
img = cv2.imread(r"C:\Users\admin\Desktop\yy2.jpg", cv2.IMREAD_GRAYSCALE) # 均值濾波 # 簡(jiǎn)單的平均卷積操作 # (3,3)為每次處理矩陣的大小 # 比如3*3的矩陣9個(gè)數(shù),9個(gè)數(shù)相加除以9來(lái)代替中間點(diǎn)的像素值 blur = cv2.blur(img, (3, 3)) # 方框?yàn)V波 # normalize=True時(shí),基本和均值一樣,可以選擇歸一化 # -1 基本為常量 box = cv2.boxFilter(img,-1,(3,3),normalize=True) # 方框?yàn)V波 # normalize=False,容易越界,因?yàn)槌^(guò)255,則就255 # 比如3*3的矩陣9個(gè)數(shù),9個(gè)數(shù)相加代替中間點(diǎn)的像素值,超過(guò)255則為255 box = cv2.boxFilter(img,-1,(3,3),normalize=False) # 高斯濾波 # 卷積核是滿足高斯分布,相當(dāng)于更重視中間的像素值 aussian = cv2.GaussianBlur(img, (5,5), 1) # 中值濾波 # 相當(dāng)于用中值代替 # 比如3*3的矩陣9個(gè)數(shù),取中值來(lái)代替中間點(diǎn)的像素值 median = cv2.medianBlur(img, 5)
到此這篇關(guān)于Python中的OpenCV圖像閾值處理和平滑處理詳解的文章就介紹到這了,更多相關(guān)OpenCV圖像閾值處理和平滑處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中實(shí)例化class的執(zhí)行順序示例詳解
這篇文章主要給大家介紹了關(guān)于Python中實(shí)例化class的執(zhí)行順序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10Python?Apschedule定時(shí)任務(wù)框架的用法詳解
apschedule是一個(gè)用python寫的定時(shí)處理框架,這篇文章主要為大家詳細(xì)介紹了Apschedule定時(shí)任務(wù)框架的用法,感興趣的小伙伴可以跟隨小編一起了解一下2023-06-06Python獲取中國(guó)節(jié)假日數(shù)據(jù)記錄入JSON文件
項(xiàng)目系統(tǒng)內(nèi)置的日歷應(yīng)用為了提升用戶體驗(yàn),特別設(shè)置了在調(diào)休日期顯示“休”的UI圖標(biāo)功能,那么問(wèn)題是這些調(diào)休數(shù)據(jù)從哪里來(lái)呢?我嘗試一種更為智能的方法:Python獲取中國(guó)節(jié)假日數(shù)據(jù)記錄入JSON文件2025-04-04python中字符串的常見(jiàn)操作總結(jié)(一)
這篇文章主要介紹了python中字符串的常見(jiàn)操作總結(jié),文章通過(guò)簡(jiǎn)單介紹對(duì)象的相關(guān)展開(kāi)全文詳細(xì)內(nèi)容,需要的朋友可以參考一下2022-07-07Matplotlib使用Cursor實(shí)現(xiàn)UI定位的示例代碼
這篇文章主要介紹了Matplotlib使用Cursor實(shí)現(xiàn)UI定位的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Python PyCryptodome庫(kù)介紹與實(shí)例教程
PyCryptodome提供了豐富的加密功能,可以滿足多種安全需求,本文介紹了幾個(gè)常見(jiàn)的使用場(chǎng)景,包括對(duì)稱加密、非對(duì)稱加密、哈希函數(shù)和消息認(rèn)證碼,感興趣的朋友跟隨小編一起看看吧2024-07-07Python logging模塊寫入中文出現(xiàn)亂碼
這篇文章主要介紹了Python logging模塊寫入中文出現(xiàn)亂碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05