【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

 今天博主将会用这张图像作为例子,给大家展示一些阈值处理的操作

一、OpenCV图像阈值化处理函数

  函数原型:

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

    src :源图像

    thresh: 阈值(127/128是我们常用的阈值)

    maxval: 当像素超过阈值(小于等于阈值)所赋予的值,否则取0

    ret: 阈值返回值(阈值设定的是多少) 

    dst: 输出的图像

    type: 处理方式

二、二值化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

三、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

四、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

 

posted @ 2022-09-06 23:47  背包Yu  阅读(78)  评论(0编辑  收藏  举报  来源