[OpenCV] Umbral de imagen basado en cv2 [Anotaciones y explicaciones súper detalladas] Domina las operaciones básicas

7270d55e07ad4581acfce299dc3aad0f.jpeg

 


lo que se dijo antes

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

prefacio

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

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

visualización de la imagen original

46d8a2e252c4495aa37671d183e23e46.jpeg

 Hoy, el blogger usará esta imagen como ejemplo para mostrarle algunas operaciones de umbralización.

1. Función de procesamiento de umbral de imagen OpenCV

  Prototipo de función:

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

    src: imagen de origen

   umbral : umbral (127/128 es nuestro umbral de uso común)

    maxval: El valor dado cuando el píxel supera el umbral (menor o igual al umbral), de lo contrario toma 0

    ret: valor de retorno del umbral (cuál es el umbral establecido) 

    dst: imagen de salida

   tipo: método de procesamiento

2. Procesamiento de binarización THRESH_BINARY e inversión de binarización THRESH_BINARY_INV 

Binarización:

Método de procesamiento: maxval si el valor del píxel del canal supera el umbral y 0 si el valor del píxel del canal es inferior al umbral

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

resultado del proceso:

62226753797e46c7bdd75b38b7ce72c0.jpeg

Cambio de binarización:

Método de procesamiento: opuesto a la binarización

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

resultado del proceso:

f70ab907d1434bb0adf90696b2bfba10.jpeg

3. Procesamiento THRESH_TRUNC

Trunc en realidad significa truncamiento

Método de procesamiento: si se supera el umbral, se toma el umbral, y si está por debajo del umbral, se toma el auto.

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

resultado del proceso:

Imagen procesada:

Imagen original:

1fc514bdde4e420c9868e14ebe75ea00.jpeg58ac38f52c55455297199a5c4b25440d.png

4. Procesamiento THRESH_TOZERO y THRESH_TOZERO_INV

Método de procesamiento:

THRESH_TOZERO: Si supera el umbral, permanecerá sin cambios, y si está por debajo del umbral, será 0

THRESH_TOZERO_INV: Si supera el umbral, será 0, y si está por debajo del umbral, permanecerá sin cambios.

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

resultado del proceso:

THRESH_TOZERO:

Imagen original:

594689d697f54d1ba33c358cf2dde020.jpegdfc6c1ac8253498b834d9e2c54b35a27.png

 THRESH_TOZERO_INV:

Imagen original:

ed0ae5fd2f624ed4a5e3919a99b016e6.jpeg6fc3d374a9b149feb9e58b9bd0c76b44.png

Resumir

Al ver esto, creo que todos tienen una cierta comprensión de este contenido, ¿verdad? Si sientes que este artículo te es útil, espero que puedas seguir prestando atención, suscribirte a la columna, dar me gusta y coleccionar son las mayores motivaciones para mi creación.

(Indique el autor y la fuente al reimprimir. No lo use con fines comerciales sin permiso)
Para obtener más artículos, visite mi página de inicio

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

 

Supongo que te gusta

Origin blog.csdn.net/Yu_Cblog/article/details/126736055
Recomendado
Clasificación