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

關(guān)于python3?opencv?圖像二值化的問題(cv2.adaptiveThreshold函數(shù))

 更新時間:2022年04月04日 11:43:06   作者:laoyezha  
這篇文章主要介紹了python3?opencv?圖像二值化cv2.adaptiveThreshold函數(shù)的相關(guān)知識,結(jié)合示例代碼介紹了adaptiveThreshold方法的用法,需要的朋友可以參考下

前一篇研究了opencv二值化方法threshold的使用,但是這個方法也存在一定的局限性,假如有一張圖存在明顯的明暗不同的區(qū)域,如下圖

可以看到左邊部分因為整體偏暗,導(dǎo)致二值化后變成全黑,丟失了所有細節(jié),這顯然不是我們想要的結(jié)果。

原因threshold函數(shù)使用一個閾值對圖像進行二值化,導(dǎo)致小于這個閾值的像素點全都變成0。因此使用一個閾值的二值化方法并不適用于上面的這張圖。那怎么搞?

很明顯,上面這張圖只有左右兩個區(qū)域明顯亮度不同,最簡單的方法就是把圖分成兩個區(qū)域,每個區(qū)域分別進行二值化,也就是說二值化上面這張圖需要兩個不同的閾值。那如果亮度不同的地方有三個,四個或者更多呢?那就每個區(qū)域用一個閾值來進行二值化。按照這個思想,因此有了cv2.adaptiveThreshold函數(shù)。

先看一下adaptiveThreshold二值化的使用效果。

明顯還是有效果的,至少左邊部分不是全黑。

接下來簡單說一下adaptiveThreshold方法

cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)

這個函數(shù)大致意思就是把圖片每個像素點作為中心取N*N的區(qū)域,然后計算這個區(qū)域的閾值,來決定這個像素點變0還是變255

src:需要進行二值化的一張灰度圖像

maxValue:滿足條件的像素點需要設(shè)置的灰度值。(將要設(shè)置的灰度值)

adaptiveMethod:自適應(yīng)閾值算法??蛇xADAPTIVE_THRESH_MEAN_C 或 ADAPTIVE_THRESH_GAUSSIAN_C

thresholdType:opencv提供的二值化方法,只能THRESH_BINARY或者THRESH_BINARY_INV

blockSize:要分成的區(qū)域大小,上面的N值,一般取奇數(shù)

C:常數(shù),每個區(qū)域計算出的閾值的基礎(chǔ)上在減去這個常數(shù)作為這個區(qū)域的最終閾值,可以為負數(shù)

dst:輸出圖像,可以忽略

前兩個參數(shù)與threshold的src和maxval一樣相同

第三個參數(shù)adaptiveMethod

提供兩種不同的計算閾值的方法,按照網(wǎng)上其他大佬的解釋

ADAPTIVE_THRESH_MEAN_C,為局部鄰域塊的平均值,該算法是先求出塊中的均值。

ADAPTIVE_THRESH_GAUSSIAN_C,為局部鄰域塊的高斯加權(quán)和。該算法是在區(qū)域中(x, y)周圍的像素根據(jù)高斯函數(shù)按照他們離中心點的距離進行加權(quán)計算。

 第四個參數(shù)thresholdType

只能THRESH_BINARY或者THRESH_BINARY_INV

第5個參數(shù)blockSize

上述算法計算鄰域時的領(lǐng)鄰域大小,一般選擇為3、5、7......等

第6個參數(shù)C

每個鄰域計算出閾值后再減去C作為最終閾值

演示一下blockSize和C對二值化結(jié)果的影響,以THRESH_BINARY,ADAPTIVE_THRESH_GAUSSIAN_C為例

可以看到,當(dāng)blockSize越大,參與計算閾值的區(qū)域也越大,細節(jié)輪廓就變得越少,整體輪廓越粗越明顯

當(dāng)C越大,每個像素點的N*N鄰域計算出的閾值就越小,中心點大于這個閾值的可能性也就越大,設(shè)置成255的概率就越大,整體圖像白色像素就越多,反之亦然。

這種二值化有點類似canny邊緣檢測,用來找輪廓或者特征點也挺不錯。

import cv2
import numpy as np
 
blocksize = 3
C=0
def adaptive_demo(gray, blocksize, C):
    binary = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, blocksize, C)
    # binary = cv2.GaussianBlur(binary, (15,15), 0)
    cv2.imshow('binary', binary)
def C_changed(value):
    global gray
    global blocksize
    global C
    C = value - 30
    print('C:', C)
    adaptive_demo(gray, blocksize, C)
def blocksize_changed(value):
    blocksize = 2 * value + 1
    print('blocksize:', blocksize)
if __name__ == "__main__":
    image_path = './img/1.jpg'
    img = cv2.imread(image_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    adaptive_demo(gray, 3, 0)
    cv2.createTrackbar('C', 'binary',0, 60, C_changed)
    cv2.createTrackbar('blocksize', 'binary',1, 20, blocksize_changed)
    cv2.waitKey(0)

到此這篇關(guān)于python3 opencv 圖像二值化筆記(cv2.adaptiveThreshold)的文章就介紹到這了,更多相關(guān)python3 opencv 圖像二值化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python字符串大小寫轉(zhuǎn)換的三種方法

    python字符串大小寫轉(zhuǎn)換的三種方法

    本文主要介紹了python字符串大小寫轉(zhuǎn)換的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python中使用PIL制作并驗證圖片驗證碼

    python中使用PIL制作并驗證圖片驗證碼

    本篇文章給大家分享了python中使用PIL制作并驗證圖片驗證碼的具體代碼以及說明,需要的朋友參考下吧。
    2018-03-03
  • Python采集電視劇《開端》彈幕做成詞云圖

    Python采集電視劇《開端》彈幕做成詞云圖

    大家好,本篇文章主要講的是Python采集電視劇《開端》彈幕做成詞云圖,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • python美多商城項目開發(fā)小結(jié)

    python美多商城項目開發(fā)小結(jié)

    這篇文章主要介紹了python美多商城項目開發(fā)小結(jié),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Python處理不同接口間參數(shù)依賴的方法總結(jié)

    Python處理不同接口間參數(shù)依賴的方法總結(jié)

    這篇文章主要為大家詳細介紹了如何使用Python編寫接口自動化測試,以有效地處理不同接口之間的參數(shù)依賴,并提供豐富的示例代碼,希望對大家有所幫助
    2024-01-01
  • 不管你的Python報什么錯,用這個模塊就能正常運行

    不管你的Python報什么錯,用這個模塊就能正常運行

    說到python強大的地方,那真是太多了,優(yōu)雅、簡潔、豐富且強大的第三方庫,開發(fā)速度快,活躍度高等,本文講到的就是其中一個模塊,用了它,再也不用擔(dān)心代碼不能運行了
    2018-09-09
  • Python利用re模塊實現(xiàn)簡易分詞(tokenization)

    Python利用re模塊實現(xiàn)簡易分詞(tokenization)

    分詞(tokenization)任務(wù)是Python字符串處理中最為常見任務(wù)了。本文將利用re模塊實現(xiàn)簡易tokenizer,文中的示例代碼講解詳細,需要的可以參考一下
    2022-04-04
  • Python ckeditor富文本編輯器代碼實例解析

    Python ckeditor富文本編輯器代碼實例解析

    這篇文章主要介紹了Python ckeditor富文本編輯器代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 簡單實現(xiàn)python畫圓功能

    簡單實現(xiàn)python畫圓功能

    這篇文章主要為大家詳細介紹了簡單實現(xiàn)python畫圓功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 一篇文章讀懂Python賦值與拷貝

    一篇文章讀懂Python賦值與拷貝

    本文給大家分享一篇文章帶領(lǐng)大家讀懂python賦值與拷貝的知識,感興趣的朋友一起看看吧
    2018-04-04

最新評論

新竹县| 山东| 龙山县| 汉沽区| 渝中区| 柞水县| 合肥市| 赣州市| 会理县| 民权县| 新宁县| 海伦市| 清原| 邹城市| 商水县| 航空| 日土县| 大方县| 枝江市| 广灵县| 正阳县| 揭阳市| 安国市| 长治市| 克什克腾旗| 清水河县| 同心县| 天祝| 武功县| 嘉峪关市| 河西区| 辽阳县| 永昌县| 宽甸| 民县| 平阳县| 杭锦旗| 荣昌县| 黄浦区| 仙桃市| 陵川县|