欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

OpenCV圖像處理之圖像的二值化解讀

 更新時間:2023年02月20日 17:01:30   作者:B.Bz  
這篇文章主要介紹了OpenCV圖像處理之圖像的二值化解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

圖像二值化( Image Binarization)就是將圖像上的像素點的灰度值設置為0或255,也就是將整個圖像呈現(xiàn)出明顯的黑白效果的過程。

二值化的原理

import cv2

img = cv2.imread('img/lena.jpg')
# 轉為灰度圖
new_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
height, width = new_img.shape[0:2]

# 設置閾值
thresh = 60

# 遍歷每一個像素點
for row in range(height):
    for col in range(width):
        # 獲取到灰度值
        gray = new_img[row, col]
        # 如果灰度值高于閾值 就等于255最大值
        if gray > thresh:
            new_img[row, col] = 255
        # 如果小于閾值,就直接改為0
        elif gray < thresh:
            new_img[row, col] = 0

cv2.imshow('img', new_img)
cv2.waitKey()

OpenCV提供的圖像二值化API

threshold()方法參數(shù):

  • 圖片矩陣
  • 閾值
  • 圖片中的最大值
  • 二值化的方式

二值化的方式:

THRESH_BINARY高于閾值改為255,低于閾值改為0
THRESH_BINARY_INV高于閾值改為0,低于閾值改為255
THRESH_TRUNC截斷,高于閾值改為閾值,最大值失效
THRESH_TOZERO高于閾值不改變,低于閾值改為0
THRESH_TOZERO_INV高于閾值該為0,低于閾值不改變
import cv2

img = cv2.imread('img/lena.jpg', cv2.IMREAD_GRAYSCALE)

thresh, new_img = cv2.threshold(img, 60, 255, cv2.THRESH_BINARY)

print(thresh)
cv2.imshow('img', img)
cv2.imshow('NEW_IMG', new_img)
cv2.waitKey()

自適應閾值

使用一個全局值作為閾值。但是在所有情況下這可能都不太好。

如果圖像在不同區(qū)域具有不同的照明條件。

在這種情況下,自適應閾值閾值可以幫助。這里,算法基于其周圍的小區(qū)域確定像素的閾值。

因此,我們?yōu)橥粓D像的不同區(qū)域獲得不同的閾值,這為具有不同照明的圖像提供了更好的結果。

adaptlive()方法參數(shù):

  • 1.圖片矩陣
  • 2.圖片灰度最大值
  • 3.計算閾值的方法
  • 4.閾值類型
  • 5.處理塊大小
  • 6.算法所用的常量C

cv2.ADAPTIVE_THRESH_MEAN_C:該閾值是該附近區(qū)域減去恒定的平均Ç。

cv2.ADAPTIVE_THRESH_GAUSSIAN_C:閾值是鄰域值減去常數(shù)C的高斯加權和。

import cv2

img = cv2.imread('img/lena.jpg', cv2.IMREAD_GRAYSCALE)

thresh_img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 5)

cv2.imshow('thresh_img', thresh_img)
cv2.waitKey()

大津算法(最大類間方差法)

圖像分割中閾值選取的最佳算法

threshold(gaussian_img, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
import cv2

img = cv2.imread('img/lena.jpg', cv2.IMREAD_GRAYSCALE)

# 使用255的閾值進行二值化
ret, thresh_img = cv2.threshold(img, 255, 255, cv2.THRESH_BINARY)
cv2.imshow('normal', thresh_img)

# 使用高斯濾波模糊圖像  參數(shù)1: 圖片矩陣  參數(shù)2:卷積核 參數(shù)3: 越大越模糊
gaussian_img = cv2.GaussianBlur(img, (5, 5), 0)
cv2.imshow('gaussian_img', gaussian_img)

# 使用大津算法0閾值二值化經(jīng)過高斯濾波模糊后的圖像
ret, thresh_img = cv2.threshold(gaussian_img, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

cv2.imshow('otsu', thresh_img)

cv2.imshow('img', img)
cv2.waitKey()

原圖:

使用255的閾值進行二值化 圖片全黑了:

使用高斯濾波模糊圖像:

圖片矩陣卷積核越大越模糊

使用0閾值的大津算法二值化經(jīng)過高斯濾波模糊后的圖像:

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python thread 并發(fā)且順序運行示例

    python thread 并發(fā)且順序運行示例

    以上源文件是對python中的線程的一個簡單應用,實現(xiàn)了對并發(fā)線程的順序運行,也許對你會有小小幫助
    2009-04-04
  • Matplotlib繪圖基礎之坐標軸詳解

    Matplotlib繪圖基礎之坐標軸詳解

    Matplotlib的坐標軸是用于在繪圖中表示數(shù)據(jù)的位置的工具,也是為了幫助觀察者了解圖像中數(shù)據(jù)的位置和大小,下面小編就來和大家詳細聊聊Matplotlib繪圖時坐標軸的具體使用吧
    2023-07-07
  • Python連接Oracle的多種方式小結

    Python連接Oracle的多種方式小結

    Oracle數(shù)據(jù)庫是一種強大的企業(yè)級關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),而Python是一門流行的編程語言,兩者的結合可以提供出色的數(shù)據(jù)管理和分析能力,本教程將詳細介紹如何在Python中連接Oracle數(shù)據(jù)庫,需要的朋友可以參考下
    2024-08-08
  • 關于你不想知道的所有Python3 unicode特性

    關于你不想知道的所有Python3 unicode特性

    我的讀者知道我是一個喜歡痛罵Python3 unicode的人。這次也不例外。我將會告訴你用unicode有多痛苦和為什么我不能閉嘴。我花了兩周時間研究Python3,我需要發(fā)泄我的失望。在這些責罵中,仍然有有用的信息,因為它教我們如何來處理Python3。如果沒有被我煩到,就讀一讀吧
    2014-11-11
  • ubuntu20.04運用startup application開機自啟動python程序的腳本寫法

    ubuntu20.04運用startup application開機自啟動python程序的腳本寫法

    這篇文章主要介紹了ubuntu20.04運用startup application開機自啟動python程序的腳本寫法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-10-10
  • python實現(xiàn)線程池的方法

    python實現(xiàn)線程池的方法

    這篇文章主要介紹了python實現(xiàn)線程池的方法,實例分析了Python線程池的原理與相關實現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • Pandas中DataFrame的分組/分割/合并的實現(xiàn)

    Pandas中DataFrame的分組/分割/合并的實現(xiàn)

    這篇文章主要介紹了Pandas中DataFrame的分組/分割/合并的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python-jwt用戶認證食用教學的實現(xiàn)方法

    python-jwt用戶認證食用教學的實現(xiàn)方法

    這篇文章主要介紹了python-jwt用戶認證食用教學的實現(xiàn)方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Python中django學習心得

    Python中django學習心得

    這篇文章主要介紹了Python中django Web應用框架的學習做了總結并把心得體會寫了一下,大家一起參考下吧。
    2017-12-12
  • 如何使用python傳入不確定個數(shù)參數(shù)

    如何使用python傳入不確定個數(shù)參數(shù)

    這篇文章主要介紹了如何使用python傳入不確定個數(shù)參數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02

最新評論