机器视觉学习(八)—— 阈值化

目录

一、阈值化

二、二值化和示例

2.1 二值化

2.2 示例代码


一、阈值化

OpenCV是一个开源的计算机视觉库,可以用于图像处理和计算机视觉任务。阈值化是图像处理中的一种常见操作,可以将图像的像素值分成两个或多个不同的类别,通常是黑色和白色。

使用OpenCV进行阈值化的步骤如下:

  1. 导入OpenCV库:

    import cv2
    
  2. 读取图像:

    image = cv2.imread('image.jpg')
    
  3. 将图像转换为灰度图像:

    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
  4. 对图像进行阈值化:

    ret, threshold_image = cv2.threshold(gray_image, threshold_value, max_value, threshold_type)
    
    • gray_image:要进行阈值化的灰度图像
    • threshold_value:阈值,用于将像素分为不同的类别。可以是一个具体的值,也可以是一个自适应的方法。
    • max_value:像素值超过阈值的像素被赋予的值。
    • threshold_type:阈值化的类型。可以是简单阈值化、自适应阈值化等。

    阈值化后的图像将被存储在threshold_image中。

  5. 显示阈值化后的图像:

    cv2.imshow('Threshold Image', threshold_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    这将创建一个新的窗口,并显示阈值化后的图像。

二、二值化和示例

2.1 二值化

函数原型如下:

ret, binary_img = cv2.threshold(gray_img, threshold, max_value, threshold_type)

其中,threshold是阈值,max_value是像素值上限,threshold_type是二值化的类型。

常用的threshold_type有:

  • cv2.THRESH_BINARY:二值化
  • cv2.THRESH_BINARY_INV:反二值化
  • cv2.THRESH_TRUNC:截断
  • cv2.THRESH_TOZERO:零化
  • cv2.THRESH_TOZERO_INV:反零化

个人笔记:

"""
    简单阈值
"""


"""
分离图像中的背景和我们关注的物体    (处理灰度图)

函数原型:   
    ret,变量名 = cv2.threshold(src, thresh, maxval, type)
        src(img):       输入图,只能输入单通道图像,通常来说为灰度图
        thresh:         阈值
        maxval:         当像素值超过了阈值(或者小于阈值),根据 type来决定,所赋予的值
        type:           二值化操作的类型

    常用二值化操作类型:
        cv2.THRESH_BINARY   
        dst = (src > thresh) ? MAXVALUE:0   表示当像素值大于设定的阈值时,为 MAXVALUE,否则为 0

        cv2.THRESH_BINARY_INV           
        dst = (src > thresh) ? 0:MAXVALUE   表示当设定的阈值大于像素值时,为 MAXVALUE,否则为 0

        cv2.THRESH_TRUNC                dst = (src > thresh) ? THRESH:SRC
        cv2.THRESH_TOZERO               dst = (src > thresh) ? SRC:0
        cv2.THRESH_TOZERO_INV           dst = (src > thresh) ? 0:SRC


二值化
    cv2.threshold(img,127,255,cv.THRESH_BINARY)
二值化翻转
    cv2.threshold(img,127,255,cv.THRESH_BINARY_INV)


"""

2.2 示例代码


import cv2 as cv

img = cv.imread("D:/Open_CV/OpenCV_demo/Pictures/4.png",0)      # 图像的绝对路径  
img = cv.resize(img,(480,480),interpolation=cv.INTER_AREA)      # 图像缩放

ret,th1 = cv.threshold(img,127,255,cv.THRESH_BINARY)            # 二值化
ret,th2 = cv.threshold(img,127,255,cv.THRESH_BINARY_INV)        # 二值化翻转

cv.imshow("img",img)
cv.imshow("th1",th1)
cv.imshow("th2",th2)

cv.waitKey(0)

运行结果:

相关推荐

  1. 机器视觉学习(三)—— 保存视频

    2024-04-01 06:30:03       38 阅读
  2. 机器学习系列——()KNN分类算法

    2024-04-01 06:30:03       49 阅读
  3. 机器学习次课

    2024-04-01 06:30:03       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 06:30:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 06:30:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 06:30:03       87 阅读
  4. Python语言-面向对象

    2024-04-01 06:30:03       96 阅读

热门阅读

  1. 182. 查找重复的电子邮箱

    2024-04-01 06:30:03       39 阅读
  2. 设计模式(10):享元模式

    2024-04-01 06:30:03       31 阅读
  3. 关于rabbitmq的prefetch机制

    2024-04-01 06:30:03       40 阅读
  4. Rust 框架(Rocket)

    2024-04-01 06:30:03       40 阅读
  5. rust- 结构体与二进制数组转换

    2024-04-01 06:30:03       44 阅读
  6. rust语言学习入门

    2024-04-01 06:30:03       42 阅读
  7. go、rust去掉了继承

    2024-04-01 06:30:03       36 阅读
  8. OV证书和EV证书的区别

    2024-04-01 06:30:03       37 阅读
  9. os模块篇(五)

    2024-04-01 06:30:03       33 阅读
  10. 算法编程:排列与组合问题

    2024-04-01 06:30:03       38 阅读
  11. HaDoop学习1

    2024-04-01 06:30:03       35 阅读