Python對(duì)圖片進(jìn)行二值化的實(shí)現(xiàn)方法
在Python中實(shí)現(xiàn)圖像二值化主要依賴圖像處理庫(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
# 打開圖像并轉(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ù)說明
閾值選擇:
- 全局閾值:128(中值)適用于對(duì)比度均勻的圖像
- 自適應(yīng)閾值:通過
adaptiveThreshold自動(dòng)計(jì)算局部閾值 - Otsu方法:
cv2.THRESH_OTSU標(biāo)志可自動(dòng)計(jì)算最優(yōu)閾值
注意事項(xiàng):
- 安裝依賴:
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í))方案。處理前建議備份原始圖像,處理后可通過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)文章
opencv python統(tǒng)計(jì)及繪制直方圖的方法
這篇文章主要介紹了opencv python統(tǒng)計(jì)及繪制直方圖的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
Python實(shí)現(xiàn)PPT/PPTX批量轉(zhuǎn)換成PDF
這篇文章主要為大家詳細(xì)介紹了如何使用Python將PowerPoint演示文稿(PPT、PPTX等)轉(zhuǎn)換為PDF文件,使演示內(nèi)容能夠在更多的設(shè)備上展示,感興趣的小伙伴可以了解下2024-01-01
Python實(shí)現(xiàn)多個(gè)Word文檔合并
在Python中,可以使用Python-docx庫(kù)來操作Word文檔,所以下面小編就為大家介紹一下如何利用Python-docx實(shí)現(xiàn)多個(gè)Word文檔合并功能吧,需要的可以參考一下2023-06-06
Pycharm沒有報(bào)錯(cuò)提示(誤觸ignore)的完美解決方案
這篇文章主要介紹了Pycharm沒有報(bào)錯(cuò)提示(誤觸ignore)的解決方案,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
python利用logging模塊實(shí)現(xiàn)根據(jù)日志級(jí)別打印不同顏色日志的代碼案例
這篇文章主要介紹了python利用logging模塊實(shí)現(xiàn)根據(jù)日志級(jí)別打印不同顏色日志,本文通過實(shí)例代碼給大家詳細(xì)講解,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
Python XlsxWriter模塊Chart類用法實(shí)例分析
這篇文章主要介紹了Python XlsxWriter模塊Chart類用法,結(jié)合實(shí)例形式分析了Python XlsxWriter模塊Chart類功能、圖表繪制常用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-03-03

