Introdução
Bem-vindo a este tutorial sobre Espaços de Cores OpenCV-Python!
Um espaço de cores é uma forma de representar os canais de cores em uma imagem. Existem vários espaços de cores diferentes, mas os três mais comuns são:
- BGR (Azul, Verde, Vermelho): O espaço de cores padrão usado pelo OpenCV.
- Gray (Escala de Cinza): Uma representação em escala de cinza da imagem.
- HSV (Hue, Saturação, Valor): Uma representação de coordenadas cilíndricas das cores. Neste tutorial, vamos nos concentrar em converter imagens entre os espaços de cores BGR, Gray e HSV.
Use a função cv.cvtColor() para converter e exibir imagens entre espaços de cores
Para converter imagens entre espaços de cores, usamos a função cv.cvtColor(). Primeiro, vamos importar as bibliotecas necessárias e ler uma imagem:
Abrir o Shell Python
Abra o shell Python digitando o seguinte comando no terminal.
python3
Use a função cv.imread() para ler a imagem image.jpg que preparamos na pasta padrão.
import cv2 as cv
import numpy as np
## Read the image
image = cv.imread('image.jpg')
BGR para Gray (Escala de Cinza)
Para converter a imagem de BGR para Gray, use a flag cv.COLOR_BGR2GRAY:
## Converting image to grayscale
gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
BGR para HSV
Para converter a imagem de BGR para HSV, use a flag cv.COLOR_BGR2HSV:
## Use HSV colour space. HSV colour space is mainly used for object tracking
hsv_image = cv.cvtColor(image, cv.COLOR_BGR2HSV)
Exibir as Imagens Convertidas
Para exibir as imagens originais e convertidas, use as funções cv.imwrite():
## Save the image to the specified file
cv.imwrite('image.jpg', image)
cv.imwrite('gray_image.jpg', gray_image)
cv.imwrite('hsv_image.jpg', hsv_image)
Use a função cv.inRange() para extrair um objeto colorido específico de uma imagem
Para extrair um objeto colorido específico de uma imagem, você pode usar a função cv.inRange(). Para este exemplo, vamos extrair um objeto azul da imagem.
Definir a Faixa de Cores
Primeiro, defina os limites inferior e superior da cor azul no espaço de cores HSV:
## Blue is represented in HSV at a hue of around 240 degrees out of 360.
## The Hue range in OpenCV-HSV is 0-180, to store the value in 8 bits.
## Thus, blue is represented in OpenCV-HSV as a value of H around 240 / 2 = 120.
## To detect blue correctly, the following values could be chosen:
blue_lower = np.array([100, 150, 0], np.uint8)
blue_upper = np.array([140, 255, 255], np.uint8)
Aplicar o Limiar (Threshold) na Imagem
Aplique o limiar na imagem HSV para obter apenas as cores azuis:
## mask of blue color
blue_mask = cv.inRange(hsv_image, blue_lower, blue_upper)
Aplicar a Máscara
Aplique a máscara à imagem original para extrair o objeto azul:
## Use the mask to extract the blue object
blue_object = cv.bitwise_and(image, image, mask=blue_mask)
Exibir o Objeto Extraído
Exiba a imagem original e o objeto azul extraído:
## Save the image to the specified file
cv.imwrite('blue_object.jpg', blue_object)
Resumo
Neste tutorial, cobrimos os conceitos básicos de espaços de cores OpenCV-Python. Com este conhecimento, você agora pode trabalhar com diferentes espaços de cores e aplicá-los a várias tarefas de processamento de imagem. Você também pode experimentar outros espaços de cores suportados pelo OpenCV, como LAB ou YCrCb.



