python opencv 簡單閾值演算法

2021-08-20 22:33:58 字數 1742 閱讀 5883

本文先了解乙個簡單閾值函式,以了解乙個閾值演算法的具體引數。

然後比較不同閾值函式的區別。

同樣的,先用一副圖說明本文重要大綱:

# 先將影象矩陣進行二值化

# 也可以直接將影象用灰度值讀入,其中0就表示用灰度讀圖

cv2.imshow('img',img)

_,img1 = cv2.threshold(img,100,250,cv2.thresh_binary)

# 這個函式返回兩個值,第二個值才是二值化後的影象矩陣

# 最後乙個引數表示一種二值化演算法

# 閾值設定為100,

# 250表示大於100的畫素值會被重新賦值為250

cv2.imshow('img',img1)

# cv2.waitkey()

cv2.destroyallwindows()

############ 以下比較不同簡單二值化演算法的區別

# 先進行不同演算法的二值化

ret,img1 = cv2.threshold(img,127,255,cv2.thresh_binary)

# 從名字可以看出一點來,binary是二元的意思,這裡指要麼0,要麼指定的乙個值(255)

print(ret)

ret,img2 = cv2.threshold(img,127,255,cv2.thresh_binary_inv)

# 注意到inv表示逆,全寫是inverse

ret,img3 = cv2.threshold(img,127,255,cv2.thresh_trunc)

# 注意到truncate表示截斷的意思。這個函式不再是二元,而是對超過某個值的部分進行處理,否則並不會處理。

ret,img4 = cv2.threshold(img,127,255,cv2.thresh_tozero)

# 實際上,這也是一種階段,對大於某乙個值的畫素值進行調整,與trunc不同的是,這裡變為0,而不是最大值

ret,img5 = cv2.threshold(img,127,255,cv2.thresh_tozero_inv)

import numpy as np

import matplotlib.pyplot as plt

#用這個模組來畫圖顯示,這個庫和opencv有些不同,可參考前面的部落格

# # 先定義以下圖的圖題和影象矩陣

titles = ['original','binary','binary_inv','trunc','tozero','tozero_inv']

imgs = [img,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.show()

閾的粵語發音 閾 閾的意思 閾的解釋

基本字義 閾 閾 y 1 門坎 立不中門,行不履閾 2 界限 視閾。聽閾。詳細字義 閾閾 y 名 1 門檻 threshold 閾,門榍也。說文 閾,門限也。玉篇 柣謂之閾。爾雅 注 閾,門限。不踐閾。禮記 曲禮 賓入不中門,不履閾。禮記 玉藻 見兄弟不逾閾。左傳 僖公二十二年 思不出乎門閾。漢書 ...

OpenCV常用基本處理函式(4)簡單變換,閾值等

2 下面的 none 本應該是輸出影象的尺寸,但是因為後邊我們設定了縮放因子3 因此這裡為 none 4 res cv2.resize img,none,fx 2,fy 2,interpolation cv2.inter cubic 5 or6 這裡呢,我們直接設定輸出影象的尺寸,所以不用設定縮放因...

Python OpenCV實現簡單的人臉檢測

匯入opencv庫 import cv2 載入特徵分類器 opencv自帶 face cascade cv2.cascadeclassifier haarcascade frontalface default.xml 開啟電腦攝像頭 capture cv2.videocapture 0 獲得攝像頭捕...