最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)圖片二值化的詳細(xì)代碼

 更新時間:2024年05月06日 12:00:23   作者:陳壯實(shí)的搬磚生活  
圖像二值化就是將圖像上的像素點(diǎn)的“灰度值”設(shè)置為[0,?0,?0]或[255,?255,?255],即要么純黑,要么純白,這篇文章主要介紹了Python實(shí)現(xiàn)圖片二值化,需要的朋友可以參考下

1. 什么是二值化

圖像二值化就是將圖像上的像素點(diǎn)的“灰度值”設(shè)置為[0, 0, 0]或[255, 255, 255],即要么純黑,要么純白。

2. 二值化的作用

通過二值化,能更好地分析物體的形狀和輪廓。

3. 二值化的實(shí)現(xiàn)

二值化的實(shí)現(xiàn)一般有: 全局閾值法、自適應(yīng)閾值法、OTSU二值化等
(1)全局閾值法
就是選定一個全局閾值,大于這個值的色素點(diǎn)就賦值為255;反之為0。
(2)自適應(yīng)閾值法
全局閾值法相對比較簡單粗暴。自適應(yīng)閾值法的原理就是將像素點(diǎn)與該點(diǎn)所在區(qū)域的像素的平均值做比較,大于則賦予255;反之,為0.
(3)OTSU二值化
不太明白,后續(xù)遇到后再進(jìn)行補(bǔ)充。

4.代碼實(shí)現(xiàn)

# ---------------------------
# @Time     : 2022/5/2 22:37
# @Author   : lcq
# @File     : two_.py
# @Function : 圖像二值化
# ---------------------------
import cv2
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
matplotlib.rcParams['font.sans-serif'] = ['SimHei']     # 顯示中文
# 為了坐標(biāo)軸負(fù)號正常顯示。matplotlib默認(rèn)不支持中文,設(shè)置中文字體后,負(fù)號會顯示異常。需要手動將坐標(biāo)軸負(fù)號設(shè)為False才能正常顯示負(fù)號。
matplotlib.rcParams['axes.unicode_minus'] = False
# 讀取灰度圖像
img = cv2.imread("C:\\Users\\17631\\Desktop\\test.jpeg", 0)
print("原圖的shape: ", img.shape)
plt.subplot(2, 2, 1)
plt.imshow(img, cmap='gray')
plt.title("原圖")
# 1.全局閾值法
ret, mask_all = cv2.threshold(src=img,                  # 要二值化的圖片
                              thresh=127,               # 全局閾值
                              maxval=255,               # 大于全局閾值后設(shè)定的值
                              type=cv2.THRESH_BINARY)   # 設(shè)定的二值化類型,THRESH_BINARY:表示小于閾值置0,大于閾值置填充色
print("全局閾值的shape: ", mask_all.shape)
plt.subplot(2, 2, 2)
plt.imshow(mask_all, cmap='gray')
plt.title("全局閾值")
# 2.自適應(yīng)閾值法
mask_local = cv2.adaptiveThreshold(src=img,                                     # 要進(jìn)行處理的圖片
                                   maxValue=255,                                # 大于閾值后設(shè)定的值
                                   adaptiveMethod=cv2.ADAPTIVE_THRESH_MEAN_C,   # 自適應(yīng)方法,ADAPTIVE_THRESH_MEAN_C:表區(qū)域內(nèi)均值;ADAPTIVE_THRESH_GAUSSIAN_C:表區(qū)域內(nèi)像素點(diǎn)加權(quán)求和
                                   thresholdType=cv2.THRESH_BINARY,             # 同全局閾值法中的參數(shù)一樣
                                   blockSize=11,                                # 方陣(區(qū)域)大小,
                                   C=1)                                         # 常數(shù)項(xiàng),每個區(qū)域計(jì)算出的閾值的基礎(chǔ)上在減去這個常數(shù)作為這個區(qū)域的最終閾值,可以為負(fù)數(shù)
print("局部閾值的shape: ", mask_local.shape)
plt.subplot(2, 2, 3)
plt.imshow(mask_local, cmap='gray')
plt.title("局部閾值")
# 3.OTSU二值化
ret2, mask_OTSU = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
print("OTSU的shape: ", mask_OTSU.shape)
plt.subplot(2, 2, 4)
plt.imshow(mask_OTSU, cmap='gray')
plt.title("OTSU")
plt.show()

效果:

打印的維度:

原圖的shape:  (2338, 1080)
全局閾值的shape:  (2338, 1080)
局部閾值的shape:  (2338, 1080)
OTSU的shape:  (2338, 1080)

注:

本文的代碼實(shí)現(xiàn)有參考這一篇文章,這篇文章寫得非常好,各位可查看:添加鏈接描述

到此這篇關(guān)于Python實(shí)現(xiàn)圖片二值化的文章就介紹到這了,更多相關(guān)Python圖片二值化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

衢州市| 凤翔县| 河西区| 秦安县| 齐齐哈尔市| 宁河县| 西乌珠穆沁旗| 平泉县| 清丰县| 涞水县| 阳西县| 泊头市| 泊头市| 江川县| 沅陵县| 邹城市| 寿宁县| 章丘市| 松桃| 甘肃省| 格尔木市| 大埔区| 松原市| 屏东县| 三门峡市| 延吉市| 泰和县| 公安县| 绥宁县| 彩票| 淮滨县| 米林县| 饶阳县| 扎兰屯市| 随州市| 阜宁县| 衢州市| 洛南县| 乌鲁木齐市| 吉安县| 东阳市|