久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python圖像閾值化處理及算法比對(duì)實(shí)例解析

瀏覽:2日期:2022-07-20 13:17:42

圖像的二值化或閾值化(Binarization)旨在提取圖像中的目標(biāo)物體,將背景以及噪聲區(qū)分開(kāi)來(lái)。通常會(huì)設(shè)定一個(gè)閾值T,通過(guò)T將圖像的像素劃分為兩類(lèi):大于T的像素群和小于T的像素群。

灰度轉(zhuǎn)換處理后的圖像中,每個(gè)像素都只有一個(gè)灰度值,其大小表示明暗程度。二值化處理可以將圖像中的像素劃分為兩類(lèi)顏色,常用的二值化算法如公式1所示:

{Y=0,gray<TY=255,gray>=T{Y=0,gray<TY=255,gray>=T​

當(dāng)灰度Gray小于閾值T時(shí),其像素設(shè)置為0,表示黑色;當(dāng)灰度Gray大于或等于閾值T時(shí),其Y值為255,表示白色。

Python OpenCV中提供了閾值函數(shù)threshold()實(shí)現(xiàn)二值化處理,其公式及參數(shù)如下圖所示:

retval, dst = cv2.threshold(src, thresh, maxval, type)

Python圖像閾值化處理及算法比對(duì)實(shí)例解析

二進(jìn)制閾值化

該方法先要選定一個(gè)特定的閾值量,比如127

1) 大于等于127的像素點(diǎn)的灰度值設(shè)定為最大值

2) 灰度值小于127的像素點(diǎn)的灰度值設(shè)置為0

例如: 156->255 89->0

關(guān)鍵字為cv2.THRESH_BINARY,完整代碼如下

import cv2def test22(): src = cv2.imread('rose.jpg') # 灰度圖片轉(zhuǎn)換 GrayImage = cv2.cvtColor(src, cv2.COLOR_BGR2BGRA) # 二進(jìn)制閾值化處理 r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_BINARY) # 顯示圖像 cv2.imshow('src', src) cv2.imshow('result', b) if cv2.waitKey(0) == 27: cv2.destroyAllWindows()test22()

效果如下:

Python圖像閾值化處理及算法比對(duì)實(shí)例解析

反二進(jìn)制閾值化

該方法與二進(jìn)制閾值化方法相似,先要選定一個(gè)特定的灰度值作為閾值,比如127

1) 大于127的像素點(diǎn)的灰度值設(shè)定為0

2) 小于該閾值的灰度值設(shè)定為255

例如:156->0 89->255

關(guān)鍵字為cv2.THRESH_BINARY_INV

代碼如下:

import cv2def test22(): src = cv2.imread('rose.jpg') # 灰度圖片轉(zhuǎn)換 GrayImage = cv2.cvtColor(src, cv2.COLOR_BGR2BGRA) # 二進(jìn)制閾值化處理 r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_BINARY_INV) # 顯示圖像 cv2.imshow('src', src) cv2.imshow('result', b) if cv2.waitKey(0) == 27: cv2.destroyAllWindows()test22()

效果如下:

Python圖像閾值化處理及算法比對(duì)實(shí)例解析

截?cái)嚅撝祷?/b>

該方法需要選定一個(gè)閾值,圖像中大于該閾值的像素點(diǎn)被設(shè)定為該閾值,小于該閾值的保持不變。

1) 大于等于127像素點(diǎn)的灰度值設(shè)定為該閾值127

2) 小于該閾值的灰度值不變

例如: 163-> 127 89->89

關(guān)鍵字cv2.THRESH_TRUNC,完整代碼如下

import cv2def test22(): src = cv2.imread('rose.jpg') # 灰度圖片轉(zhuǎn)換 GrayImage = cv2.cvtColor(src, cv2.COLOR_BGR2BGRA) # 二進(jìn)制閾值化處理 r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_TRUNC) # 顯示圖像 cv2.imshow('src', src) cv2.imshow('result', b) if cv2.waitKey(0) == 27: cv2.destroyAllWindows()test22()

效果如下:

Python圖像閾值化處理及算法比對(duì)實(shí)例解析

反閾值化為0

該方法先選定一個(gè)閾值,比如127

(1) 大于等于閾值127的像素點(diǎn)變?yōu)?(2) 小于該閾值的像素點(diǎn)值保持不變

例如: 128->0 89->89

關(guān)鍵字為cv2.THRESH_TOZERO_INV,完整代碼如下:

import cv2def test22(): src = cv2.imread('rose.jpg') # 灰度圖片轉(zhuǎn)換 GrayImage = cv2.cvtColor(src, cv2.COLOR_BGR2BGRA) # 二進(jìn)制閾值化處理 r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_TOZERO_INV) # 顯示圖像 cv2.imshow('src', src) cv2.imshow('result', b) if cv2.waitKey(0) == 27: cv2.destroyAllWindows()test22()

效果如下:

Python圖像閾值化處理及算法比對(duì)實(shí)例解析

閾值為0

該方法先選定一個(gè)閾值,比如127

(1) 大于等于閾值127的像素點(diǎn),值保持不變

(2) 小于該閾值的像素點(diǎn)值設(shè)置為0

例如: 163->163 102->0

關(guān)鍵字為cv2.THRESH_TOZERO,完整代碼如下:

import cv2def test22(): src = cv2.imread('rose.jpg') # 灰度圖片轉(zhuǎn)換 GrayImage = cv2.cvtColor(src, cv2.COLOR_BGR2BGRA) # 二進(jìn)制閾值化處理 r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_TOZERO) # 顯示圖像 cv2.imshow('src', src) cv2.imshow('result', b) if cv2.waitKey(0) == 27: cv2.destroyAllWindows()test22()

效果如下:

Python圖像閾值化處理及算法比對(duì)實(shí)例解析

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 邹城市| 平阴县| 灌南县| 万山特区| 阳西县| 沁阳市| 修文县| 瓮安县| 陇南市| 昌江| 尼木县| 中西区| 城市| 喀什市| 道孚县| 宿州市| 许昌县| 苗栗市| 灵宝市| 伊金霍洛旗| 千阳县| 余姚市| 新巴尔虎左旗| 东丽区| 西华县| 称多县| 襄垣县| 惠东县| 凤翔县| 读书| 桐乡市| 体育| 精河县| 顺义区| 辽阳市| 漳浦县| 新野县| 巴林左旗| 宝丰县| 江阴市| 五大连池市|