【OpenCV】cv2に基づく画像閾値化【超詳細な注釈と解説】基本操作をマスター

7270d55e07ad4581acfce299dc3aad0f.jpeg

 


前に言われたこと

博主今天给大家带来人工智能的一个重要领域的入门操作,opencv包的使用和基本操作,希望大家可以从中学到一些东西!

序文

那么这里博主先安利一下一些干货满满的专栏啦!

手撕数据结构https://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014.3001.5482这里包含了博主很多的数据结构学习上的总结,每一篇都是超级用心编写的,有兴趣的伙伴们都支持一下吧!
算法专栏https://blog.csdn.net/yu_cblog/category_11464817.html

元画像表示

46d8a2e252c4495aa37671d183e23e46.jpeg

 今日、ブロガーはこの画像を例として使用して、いくつかのしきい値操作を示します

1.OpenCV画像閾値処理機能

  関数プロトタイプ:

ret,dst = threshold(src,thresh,maxval,type)

    src :ソース画像

   thresh:しきい値 (127/128 は一般的に使用されるしきい値です)

    maxval:ピクセルがしきい値を超えた (しきい値以下) 場合の値。それ以外の場合は 0

    ret:しきい値の戻り値 (しきい値セットは何ですか) 

    dst:出力画像

   種類:加工方法

2. 二値化 THRESH_BINARY と二値化反転 THRESH_BINARY_INV 処理 

二値化:

処理方法: チャネルのピクセル値がしきい値を超えた場合は maxval、チャネルのピクセル値がしきい値を下回った場合は 0

def test1():
    img = cv2.imread(r"C:\Users\Administrator\Desktop\test4.jpg", 1) # 图片路径
    ret,img1=cv2.threshold(img,127,255,cv2.THRESH_BINARY) # 二值化
    cv2.imshow('img1',img1)
    cv2.waitKey(0)
test1()

処理結果:

62226753797e46c7bdd75b38b7ce72c0.jpeg

二値化反転:

処理方法:二値化の逆

def test1():
    img = cv2.imread(r"C:\Users\Administrator\Desktop\test5.jpg", 1)
    ret,img1=cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV) # 二值化翻转
    cv2.imshow('img1',img1)
    cv2.waitKey(0)
test1()

処理結果:

f70ab907d1434bb0adf90696b2bfba10.jpeg

3.THRESH_TRUNC処理

Trunc は実際には切り捨てを意味します

処理方法: しきい値を超えた場合はしきい値を取得し、しきい値を下回った場合は自己を取得します。

def test3():
    img = cv2.imread(r"C:\Users\Administrator\Desktop\test.jpg", 0)
    cv2.imshow('img',img)
    # 3.THRESH_TRUNC 超过阈值取阈值,低于阈值取自身
    ret,img1=cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
    cv2.imshow('img1',img1)
    cv2.waitKey(0)
test3()

処理結果:

処理された画像:

元の画像:

1fc514bdde4e420c9868e14ebe75ea00.jpeg58ac38f52c55455297199a5c4b25440d.png

4. THRESH_TOZERO および THRESH_TOZERO_INV 処理

処理方法:

THRESH_TOZERO:閾値を超えていればそのまま、閾値を下回っていれば0

THRESH_TOZERO_INV:しきい値を超えた場合は 0 になり、しきい値を下回った場合は変更されません。

def test4():
    img = cv2.imread(r"C:\Users\Administrator\Desktop\test5.jpg", 1)
    cv2.imshow('img',img)
    # 4.THRESH_TOZERO 超过阈值不变,低于阈值取0
    # 5.THRESH_TOZERO_INV 取反 -- 超过阈值取0,低于阈值取不变
    ret,img1=cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
    ret,img1=cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)
    cv2.imshow('img1',img1)
    cv2.waitKey(0)
    print(ret)
test4()

処理結果:

THRESH_TOZERO:

元の画像:

594689d697f54d1ba33c358cf2dde020.jpegdfc6c1ac8253498b834d9e2c54b35a27.png

 THRESH_TOZERO_INV:

元の画像:

ed0ae5fd2f624ed4a5e3919a99b016e6.jpeg6fc3d374a9b149feb9e58b9bd0c76b44.png

要約する

これを見ると、この内容については皆さん一定の理解があると思いますよね?この記事が役に立ったと感じた場合は、引き続き注意を払い、コラムを購読し、いいねと収集が私の作成の最大の動機であることを願っています!

(転載の際は作者と出典を明記してください。無断での商用利用はご遠慮ください)
その他の記事はホームページをご覧ください

@バックパックhttps://blog.csdn.net/Yu_Cblog?spm=1000.2115.3001.5343

 

おすすめ

転載: blog.csdn.net/Yu_Cblog/article/details/126736055