Opencv學習筆記10 -- 圖像閥值

簡介

圖像閥值可以理解爲一種對圖像像素點的分類器,通過設置不同的限制值來對圖片內的像素點進行分類。具體將在下文中記錄。

二值閥值化

先通過代碼演示,之後會記錄各個參數的意義

import  cv2

p = cv2.imread('2.png',1)
#第二個參數爲閥值(當像素小於這個閥值則置0,大於則置255,並通過運算顯示分類),第三個參數爲最大值,第四個參數爲flag標誌位
r , p2 = cv2.threshold(p,180,255,cv2.THRESH_BINARY)
cv2.imshow('origin',p)
cv2.imshow('outcome',p2)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果:
原圖:
在這裏插入圖片描述效果圖:
在這裏插入圖片描述可以看到分類邊界,通過改變不同的分類閥值可以獲得不同的輸出,這裏可以根據實際情況更改第二個參數

反向二值閥值化

與上文的作用相同,只不過顏色對調

代碼演示:

import  cv2

p = cv2.imread('2.png',1)
#只有flag標記位發生了改變
r , p2 = cv2.threshold(p,180,255,cv2.THRESH_BINARY_INV)
cv2.imshow('origin',p)
cv2.imshow('outcome',p2)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖:
在這裏插入圖片描述發現顏色發生了轉換

截斷閥值化

代碼:

import  cv2

p = cv2.imread('2.png',1)
#這裏的第二個參數也是閥值,但是意義發生了改變,具體改變下文會記錄
r , p2 = cv2.threshold(p,127,255,cv2.THRESH_TRUNC)
cv2.imshow('origin',p)
cv2.imshow('outcome',p2)
cv2.waitKey(0)
cv2.destroyAllWindows()

原圖:
在這裏插入圖片描述效果圖:
在這裏插入圖片描述這裏說明一下第二個參數的作用爲,當圖中像素點大於127(自己設定的)則替換爲127(圖左側). 低於127的則保留

自適應閥值

自適應閥值在應用中很多,比如讀取數字,文字等操作都可以用到,他是自動根據圖片來選擇合適的閥值,有兩種方法:1.均值自適應 2.高斯自適應

均值自適應

代碼:

import  cv2
#注意傳入灰度圖
p = cv2.imread('3.png',0)
p2 = cv2.adaptiveThreshold(p,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,2)
cv2.imshow('origin',p)
cv2.imshow('outcome',p2)
cv2.waitKey(0)
cv2.destroyAllWindows()
p2 = cv2.adaptiveThreshold(p,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,2)

這句核心代碼前4個參數是固定的

第五個參數注意只能是單數(我也不清楚爲什麼,opencv中很多參數如果報錯那麼改成單數就會解決很大一部分),指的是局部閥值的影響範圍

第六個參數可以根據實際需要決定

原圖:
在這裏插入圖片描述效果圖:
在這裏插入圖片描述
高斯自適應

import  cv2

p = cv2.imread('3.png',0)
#各項參數可以參考二值閥值化 , 進行這行前可自行添加高斯模糊去噪點
r , p2 = cv2.threshold(p,155,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C)
cv2.imshow('origin',p)
cv2.imshow('outcome',p2)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章