☞ ░ 前往老猿Python博文目錄 ░
一、概述
openCV圖像的閾值處理又稱爲二值化,之所以稱爲二值化,是它可以將一幅圖轉換爲感興趣的部分(前景)和不感興趣的部分(背景)。轉換時,通常將某個值(即閾值)當作區分處理的標準,通常將超過閾值的像素作爲前景。
閾值處理有2種方式,一種是固定閾值方式,又包括多種處理模式,另一種是非固定閾值,由程序根據算法以及給出的最大閾值計算圖像合適的閾值,再用這個閾值進行二值化處理,非固定閾值處理時需要在固定閾值處理基礎上疊加組合標記,疊加方式就是與固定閾值方式的標記相或。
二、語法說明
調用語法:
retval, dst = cv2.threshold (src, thresh, maxval, type)
其中:
- src:源圖像,8位或32位圖像的numpy數組
- thresh:閾值,0-255之間的數字,在進行處理時以閾值爲邊界來設不同的輸出,閾值判斷時,是以小於等於閾值和大於閾值作爲分界條件
- maxval:最大閾值,當使用固定閾值方法時爲指定閾值,當疊加標記時爲允許最大的閾值,算法必須在小於該值範圍內計算合適的閾值
- type:處理方式,具體取值及含義如下:
- dst:閾值化處理後的結果圖像numpy數組,其大小和通道數與源圖像相同
- retval:疊加cv2.THRESH_OTSU或cv2.THRESH_TRIANGLE標記後返回真正使用的閾值
三、彩色圖像處理
從threshold 的說明來看是支持32爲彩色圖像處理的,但網上幾乎找不到關於處理彩色圖像的機制說明及案例,經過老猿驗證測試,對threshold 處理彩色圖像的機制說明如下:
如果是32位彩色圖像,則是以RGB每個通道的值單獨與閾值進行比較,按每個通道進行閾值處理,返回的是一個閾值處理後的RGB各自的值,即還是32位圖像。
案例:
img1 = cv2.imread(r"F:\screenpic\redflower.jpg")
ret,img2 = cv2.threshold(img1, 35, 255, cv2.THRESH_BINARY)
cv2.imwrite(r"F:\screenpic\redflower_threshold.jpg",img2)
效果:
源圖:
處理後圖:
關於老猿的付費專欄
老猿的付費專欄《使用PyQt開發圖形界面Python應用》專門介紹基於Python的PyQt圖形界面開發基礎教程,付費專欄《moviepy音視頻開發專欄》詳細介紹moviepy音視頻剪輯合成處理的類相關方法及使用相關方法進行相關剪輯合成場景的處理,兩個專欄加起來只需要19.9元,都適合有一定Python基礎但無相關專利知識的小白讀者學習。這2個收費專欄都有對應免費專欄,只是收費專欄的文章介紹更具體、內容更深入、案例更多。
付費專欄文章目錄:《moviepy音視頻開發專欄文章目錄》、《使用PyQt開發圖形界面Python應用專欄目錄》。
關於Moviepy音視頻開發的內容,請大家參考《Python音視頻剪輯庫MoviePy1.0.3中文教程導覽及可執行工具下載》的導覽式介紹。
對於缺乏Python基礎的同仁,可以通過老猿的免費專欄《專欄:Python基礎教程目錄》從零開始學習Python。
如果有興趣也願意支持老猿的讀者,歡迎購買付費專欄。