Lab Trabalhando com Espaços de Cores

OpenCVBeginner
Pratique Agora

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.