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