opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法
一、引言
在《OpenCV閾值處理函數(shù)threshold處理32位彩色圖像的案例》介紹了threshold 函數(shù),但threshold 的圖像閾值處理對于某些光照不均的圖像,這種全局閾值分割的方法并不能得到好的效果。
圖像閾值化操作中,我們更關(guān)心的是從二值化圖像中分離目標(biāo)區(qū)域和背景區(qū)域,僅僅通過固定閾值很難達(dá)到理想的分割效果。在圖片中的灰度是不均勻的,所以通常情況下圖片中不同區(qū)域的閾值是不一樣的。這樣就需要一種方法根據(jù)圖像不同區(qū)域亮度或灰度分布,計算其局部閾值來進(jìn)行閾值處理。這種方法就是自適應(yīng)閾值化圖像處理,實際上這可以稱為局部閾值法,在OpenCV中的adaptiveThreshold就是這種方法。
二、adaptiveThreshold語法介紹
調(diào)用語法:
adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)
說明:
- src:源圖像,必須是8位的灰度圖
- dst:處理后的目標(biāo)圖像,大小和類型與源圖像相同
- maxValue:用于指定滿足條件的像素設(shè)定的灰度值
- adaptiveMethod:使用的自適應(yīng)閾值算法,有2種類型ADAPTIVE_THRESH_MEAN_C算法(局部鄰域塊均值)或ADAPTIVE_THRESH_GAUSSIAN_C(局部鄰域塊高斯加權(quán)和),ADAPTIVE_THRESH_MEAN_C的計算方法是計算出鄰域的平均值再減去第六個參數(shù)C的值,ADAPTIVE_THRESH_GAUSSIAN_C的計算方法是計算出鄰域的高斯均勻值再減去第六個參數(shù)C的值。處理邊界時使用BORDER_REPLICATE | BORDER_ISOLATED模式
- thresholdType:閾值類型,只能是THRESH_BINARY或THRESH_BINARY_INV二者之一,具體參考上面“圖像閾值處理”的表格
- blockSize:表示鄰域塊大小,用來計算區(qū)域閾值,一般選擇3、5、7……
- C:表示常數(shù),它是一個從均勻或加權(quán)均值提取的常數(shù),通常為正數(shù),但也可以是負(fù)數(shù)或零
- 返回值:處理后的圖像
三、補充說明
四、案例
import cv2img = cv2.imread(r'F:screenpic1.jpg',cv2.IMREAD_GRAYSCALE)newImg = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 3, 5)cv2.imshow('img',img)cv2.imshow('newImg',newImg)cv2.waitKey(60000)運行效果:
源圖:
下面是分別設(shè)置不同blockSize的結(jié)果圖,左圖塊大小blockSize為31,右圖blockSize為3:
可以看到blockSize小時,輪廓識別效果明顯,而大時,就是一個二值化圖像。
關(guān)于老猿的付費專欄
老猿的付費專欄《使用PyQt開發(fā)圖形界面Python應(yīng)用》專門介紹基于Python的PyQt圖形界面開發(fā)基礎(chǔ)教程,付費專欄《moviepy音視頻開發(fā)專欄》詳細(xì)介紹moviepy音視頻剪輯合成處理的類相關(guān)方法及使用相關(guān)方法進(jìn)行相關(guān)剪輯合成場景的處理,兩個專欄加起來只需要19.9元,都適合有一定Python基礎(chǔ)但無相關(guān)專利知識的小白讀者學(xué)習(xí)。這2個收費專欄都有對應(yīng)免費專欄,只是收費專欄的文章介紹更具體、內(nèi)容更深入、案例更多。
付費專欄文章目錄:《moviepy音視頻開發(fā)專欄文章目錄》、《使用PyQt開發(fā)圖形界面Python應(yīng)用專欄目錄》。
關(guān)于Moviepy音視頻開發(fā)的內(nèi)容,請大家參考《Python音視頻剪輯庫MoviePy1.0.3中文教程導(dǎo)覽及可執(zhí)行工具下載》的導(dǎo)覽式介紹。
對于缺乏Python基礎(chǔ)的同仁,可以通過老猿的免費專欄《專欄:Python基礎(chǔ)教程目錄》從零開始學(xué)習(xí)Python。
如果有興趣也愿意支持老猿的讀者,歡迎購買付費專欄。
本文在CSDN的“老猿Python”首發(fā),頭條號、微信公眾號和百家號“老猿Python”轉(zhuǎn)載,由于這些平臺對外部鏈接的限制,文中不能包含外部鏈接。如果是頭條請點擊文章底部最下方的“了解更多”跳轉(zhuǎn)CSDN閱讀原文,如果是微信公眾號請點擊文章底部最下方的“閱讀原文”跳轉(zhuǎn)CSDN閱讀原文,否則請在百度搜索或CSDN搜索中輸入"CSDN老猿Python”加文章標(biāo)題關(guān)鍵字搜尋本文。
總結(jié)
以上是生活随笔為你收集整理的opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql为什么不驼峰_为什么不用驼峰命
- 下一篇: python文字游戏 生成数字菜单_py