Python對(duì)圖片進(jìn)行二值化的實(shí)現(xiàn)方法
在Python中實(shí)現(xiàn)圖像二值化主要依賴(lài)圖像處理庫(kù)(如OpenCV或PIL)。以下是兩種主流方法的詳細(xì)實(shí)現(xiàn):
方法1:使用OpenCV(推薦高性能場(chǎng)景)
import cv2
# 讀取圖像(支持路徑或直接讀取)
image = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE) # 直接轉(zhuǎn)為灰度圖
# 全局閾值二值化(閾值設(shè)為128)
_, binary_image = cv2.threshold(image, 128, 255, cv2.THRESH_BINARY)
# 自適應(yīng)閾值(適用于光照不均場(chǎng)景)
adaptive_binary = cv2.adaptiveThreshold(
image,
255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY,
11, # 鄰域尺寸(需奇數(shù))
2 # 常數(shù)偏移量
)
# 保存結(jié)果
cv2.imwrite('binary_global.jpg', binary_image)
cv2.imwrite('adaptive_binary.jpg', adaptive_binary)
方法2:使用PIL(輕量級(jí)方案)
from PIL import Image, ImageOps
# 打開(kāi)圖像并轉(zhuǎn)為灰度
img = Image.open('input.jpg').convert('L')
# 手動(dòng)二值化(閾值128)
binary_img = img.point(lambda p: 255 if p > 128 else 0)
# 使用內(nèi)置二值化方法
binary_img_builtin = ImageOps.colorize(
img,
black="black",
white="white",
threshold=0.5 # 0.0-1.0范圍
)
# 保存結(jié)果
binary_img.save('pil_binary.jpg')
binary_img_builtin.save('pil_builtin_binary.jpg')
關(guān)鍵參數(shù)說(shuō)明
閾值選擇:
- 全局閾值:128(中值)適用于對(duì)比度均勻的圖像
- 自適應(yīng)閾值:通過(guò)
adaptiveThreshold自動(dòng)計(jì)算局部閾值 - Otsu方法:
cv2.THRESH_OTSU標(biāo)志可自動(dòng)計(jì)算最優(yōu)閾值
注意事項(xiàng):
- 安裝依賴(lài):
pip install opencv-python pillow - 輸入路徑:確保圖像文件存在或使用絕對(duì)路徑
- 顏色空間:處理前統(tǒng)一轉(zhuǎn)為灰度圖(
cv2.COLOR_BGR2GRAY) - 內(nèi)存管理:大圖像建議分塊處理
擴(kuò)展優(yōu)化
- 大津法(OTSU):在
cv2.threshold中添加cv2.THRESH_OTSU標(biāo)志 - 顏色二值化:對(duì)彩色 圖像各通道分別處理后合并
- 形態(tài)學(xué)操作:二值化后配合
cv2.morphologyEx優(yōu)化邊緣
以上代碼可直接復(fù)制運(yùn)行,根據(jù)實(shí)際場(chǎng)景選擇OpenCV(高性能)或PIL(輕量級(jí))方案。處理前建議備份原始圖像,處理后可通過(guò)matplotlib進(jìn)行可視化驗(yàn)證。
到此這篇關(guān)于Python對(duì)圖片進(jìn)行二值化的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Python圖片二值化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從基礎(chǔ)到進(jìn)階帶你玩轉(zhuǎn)Python中的異常處理
在編程過(guò)程中,我們經(jīng)常會(huì)遇到各種運(yùn)行時(shí)錯(cuò)誤,比如除零錯(cuò)誤、文件未找到錯(cuò)誤等,本文將介紹Python異常處理的基礎(chǔ)知識(shí),希望對(duì)大家有所幫助2025-01-01
利用Python+阿里云實(shí)現(xiàn)DDNS動(dòng)態(tài)域名解析的方法
這篇文章主要介紹了利用Python+阿里云實(shí)現(xiàn)DDNS動(dòng)態(tài)域名解析的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
python寫(xiě)入已存在的excel數(shù)據(jù)實(shí)例
下面小編就為大家分享一篇python寫(xiě)入已存在的excel數(shù)據(jù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
python 用for循環(huán)實(shí)現(xiàn)1~n求和的實(shí)例
今天小編就為大家分享一篇python 用for循環(huán)實(shí)現(xiàn)1~n求和的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
對(duì)python修改xml文件的節(jié)點(diǎn)值方法詳解
今天小編就為大家分享一篇對(duì)python修改xml文件的節(jié)點(diǎn)值方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Python?+?uiautomator2手機(jī)自動(dòng)化控制超詳細(xì)教程
在移動(dòng)應(yīng)用開(kāi)發(fā)領(lǐng)域,APP自動(dòng)化測(cè)試至關(guān)重要,這篇文章主要介紹了Python+uiautomator2手機(jī)自動(dòng)化控制的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-03-03
python實(shí)現(xiàn)矩陣和array數(shù)組之間的轉(zhuǎn)換
今天小編就為大家分享一篇python實(shí)現(xiàn)矩陣和array數(shù)組之間的轉(zhuǎn)換,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
python實(shí)現(xiàn)指定字符串補(bǔ)全空格的方法
這篇文章主要介紹了python實(shí)現(xiàn)指定字符串補(bǔ)全空格的方法,涉及Python中rjust,ljust和center方法的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04

