[OpenCV] Limiar de imagem baseado em cv2 [Anotações e explicações super detalhadas] Domine as operações básicas

7270d55e07ad4581acfce299dc3aad0f.jpeg

 


o que foi dito antes

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

prefácio

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

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

Exibição de imagem original

46d8a2e252c4495aa37671d183e23e46.jpeg

 Hoje, o blogueiro usará esta imagem como exemplo para mostrar algumas operações de limite

1. Função de processamento de limite de imagem OpenCV

  Protótipo de função:

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

    src: imagem de origem

   thresh : threshold (127/128 é o nosso limite comumente usado)

    maxval: O valor dado quando o pixel excede o limite (menor ou igual ao limite), caso contrário leva 0

    ret: Valor de retorno do limite (qual é o limite definido) 

    dst: imagem de saída

   tipo: método de processamento

2. Processamento de Binarização THRESH_BINARY e Inversão de Binarização THRESH_BINARY_INV 

Binarização:

Método de processamento: maxval se o valor do pixel do canal exceder o limite e 0 se o valor do pixel do canal for inferior ao limite

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 do processo:

62226753797e46c7bdd75b38b7ce72c0.jpeg

Inversão de binarização:

Método de processamento: oposto à binarização

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 do processo:

f70ab907d1434bb0adf90696b2bfba10.jpeg

3. Processamento de THRESH_TRUNC

Trunc na verdade significa truncamento

Método de processamento: se o limite for excedido, o limite é obtido e, se estiver abaixo do limite, o self é obtido.

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 do processo:

Imagem processada:

Imagem original:

1fc514bdde4e420c9868e14ebe75ea00.jpeg58ac38f52c55455297199a5c4b25440d.png

4. Processamento de THRESH_TOZERO e THRESH_TOZERO_INV

Método de processamento:

THRESH_TOZERO: Se ultrapassar o limite, permanecerá inalterado e, se estiver abaixo do limite, será 0

THRESH_TOZERO_INV: Se ultrapassar o limite, será 0, e se estiver abaixo do limite, permanecerá inalterado.

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 do processo:

THRESH_TOZERO:

Imagem original:

594689d697f54d1ba33c358cf2dde020.jpegdfc6c1ac8253498b834d9e2c54b35a27.png

 THRESH_TOZERO_INV:

Imagem original:

ed0ae5fd2f624ed4a5e3919a99b016e6.jpeg6fc3d374a9b149feb9e58b9bd0c76b44.png

Resumir

Vendo isso, acredito que todos tenham uma certa compreensão desse conteúdo, certo? Se você sente que este artigo é útil para você, espero que possa continuar prestando atenção, se inscrever na coluna, curtir e colecionar são as maiores motivações para minha criação!

(Por favor, indique o autor e a fonte ao reimprimir. Por favor, não use para fins comerciais sem permissão)
Para mais artigos, visite minha página inicial

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

 

Acho que você gosta

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