OpenCV基于cv2的图像阈值化处理超详细的注释和解释掌握基本操作

Posted @背包

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV基于cv2的图像阈值化处理超详细的注释和解释掌握基本操作相关的知识,希望对你有一定的参考价值。

 


说在前面的话

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

前言

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

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

原图像展示

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

一、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()

处理结果:

二值化翻转:

处理方式:和二值化相反

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()

处理结果:

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

处理结果:

处理后的图片:

原图:

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

原图:

 THRESH_TOZERO_INV:

原图:

总结

看到这里 相信大家对这方面的内容有了一定的理解了吧?如果你感觉这篇文章对你有帮助的话,希望你可以持续关注,订阅专栏,点赞收藏都是我创作的最大动力!

( 转载时请注明作者和出处。未经许可,请勿用于商业用途 )
更多文章请访问我的主页

@背包https://blog.csdn.net/Yu_Cblog?spm=1000.2115.3001.5343

 

以上是关于OpenCV基于cv2的图像阈值化处理超详细的注释和解释掌握基本操作的主要内容,如果未能解决你的问题,请参考以下文章

2. OpenCV-Python——阈值平滑处理形态学操作

2. OpenCV-Python——阈值平滑处理形态学操作

OpenCV-Python系列—— 图像处理(灰度图二值化边缘检测高斯模糊轮廓检测)

opencv 5 -- 图像阈值

利用OpenCV的函数threshold()对图像作基于OTSU的阈值化处理---并附比较好的介绍OTSU原理的博文链接

OpenCV-Python图像乘法运算cv2.multiply函数详解及像素值溢出归一化处理