目录

一、阈值化

二、二值化和示例

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)

运行结果:

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

04-04 19:26