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/