Skip to content

Segmentação por Cores

    Segmentação de Cores

    Olá a todos! Neste tutorial, vamos descobrir como segmentar uma imagem usando cores diferentes e Python. Vamos usar uma biblioteca chamada OpenCV para mudar entre diferentes tipos de cores, encontrar faixas específicas de cores e dividir partes de uma imagem.

    Isso é importante para mexer em fotos e pode ajudar em várias situações.

    Entendendo as Cores de Imagens

    Antes de começarmos, precisamos entender algumas coisas sobre cores. As cores em uma imagem podem ser mostradas de diferentes jeitos, e cada jeito é chamado de “espaço de cores”. Dois tipos comuns são RGB (Vermelho, Verde, Azul) e HSV (Matiz, Saturação, Valor). O RGB é mais sobre luz, enquanto o HSV foca no jeito da cor ser percebida.

    Segmentando uma foto de um Peixe

    Vamos usar uma foto de um peixe para ver como funciona separar as cores.

    Primeiro, mudamos a foto para HSV usando o OpenCV

    import cv2
    import numpy as np
    
    def segment_fish(image):
        # Converta a imagem para o espaço de cores HSV
        hsv_image = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
        # Defina o intervalo de cor para laranja claro e escuro
        light_orange = (1, 190, 200)
        dark_orange = (18, 255, 255)
        # Aplique a máscara para a cor laranja
        mask = cv2.inRange(hsv_image, light_orange, dark_orange)
        # Aplique a máscara sobre a imagem original
        result = cv2.bitwise_and(image, image, mask=mask)
        # Aplique um desfoque para melhorar a segmentação
        blur = cv2.GaussianBlur(result, (7, 7), 0)
        return blur

    A função segment_fish recebe uma imagem e aplica uma máscara para isolar a cor laranja, que é a cor predominante do peixe. A segmentação resultante é refinada com um desfoque Gaussiano para remover ruídos.

    Visualizando a Segmentação

    Vamos visualizar o resultado da segmentação. Primeiro, carregamos a imagem original do peixe:

    nemo = cv2.imread('nemo.jpg')
    nemo = cv2.cvtColor(nemo, cv2.COLOR_BGR2RGB)
    

    Agora, segmentamos o peixe usando a função segment_fish:

    segmented_nemo = segment_fish(nemo)
    

    Finalmente, mostramos as imagens original e segmentada:

    import matplotlib.pyplot as plt
    
    plt.subplot(1, 2, 1)
    plt.imshow(nemo)
    plt.title("Imagem Original")
    
    plt.subplot(1, 2, 2)
    plt.imshow(segmented_nemo)
    plt.title("Peixe Segmentado")
    plt.show()
    

    Aqui, você pode ver a diferença entre a imagem original e a imagem segmentada, onde o peixe está isolado por sua cor laranja característica.

    Conclusão e Possibilidades Futuras

    Segmentar uma imagem por cores é um jeito bacana de separar coisas em fotos pela cor.

    Isso é muito útil para encontrar coisas em fotos, e embora o exemplo seja simples, dá para usar essa ideia para fazer tarefas mais difíceis, como achar objetos e separar elas em grupos.

    O OpenCV é um programa que ajuda a fazer isso, e ele tem muitos jeitos de mexer em fotos e cores. Espero que esse tutorial tenha te ajudado a entender como fazer isso.

    Aprender isto é uma etapa legal para saber mais sobre fotos e como o computador vê elas. Até logo!

    Outras Referências

    Link para a biblioteca OpenCV: https://pypi.org/project/opencv-python/

    Leave a Reply

    Your email address will not be published. Required fields are marked *