Índice:

Detecção de cores em Python usando OpenCV: 8 etapas
Detecção de cores em Python usando OpenCV: 8 etapas

Vídeo: Detecção de cores em Python usando OpenCV: 8 etapas

Vídeo: Detecção de cores em Python usando OpenCV: 8 etapas
Vídeo: Reconhecimento de Cores Python + OpenCV 2024, Julho
Anonim
Image
Image

Olá! Este instrutível é usado para orientar sobre como extrair uma cor específica de uma imagem em python usando a biblioteca openCV. Se você é novo nessa técnica, não se preocupe, no final deste guia, você poderá programar seu próprio programa de detecção de cores.

A seguir estão as funções ou podemos dizer técnicas que você aprenderá, 1. Como ler uma imagem

2. Como criar barras de trilha

3. Como ajustar o valor de matiz, saturação e valor de uma imagem usando as barras de controle

4. E então haverá seu resultado final

Você pode assistir ao vídeo da saída que anexei abaixo.

Então vamos começar

Suprimentos

  • Python 3
  • biblioteca openCV
  • biblioteca entorpecida

Etapa 1: Importando Bibliotecas

Importando Bibliotecas
Importando Bibliotecas

A imagem é de ferrari amarelo como mostrado e iremos programar para extrair apenas a cor amarela dessa imagem

O primeiro passo será importar nossas bibliotecas

1. Incluindo biblioteca openCV. É chamado de cv2 em python

2. Incluindo biblioteca numpy como np. O "as" nos permite escrever numpy como np, então não há necessidade de escrever numpy novamente e novamente

Etapa 2: Criação de Barras de Trilha

Criação de barras de trilha
Criação de barras de trilha

Barras de trilha são criadas para ajustar o valor de matiz, saturação e valor em uma imagem.

cv2.namedWindow ("TrackBars") Esta linha de código é usada para criar uma nova janela de saída e o nome da janela é fornecido como TrackBars (você pode dar o nome que desejar)

cv2.resizeWindow ("TrackBars", 600, 250) Esta função é usada para redimensionar uma janela. "TrackBars" é para qual janela você deseja redimensionar, já que eu queria redimensionar a janela do TrackBars. Eu escrevi esse nome. Seguido por dois inteiros. Esses dois inteiros são a largura e a altura. Você pode brincar com esses dois números para mudar o tamanho

Etapa 3: Criação de TrackBars para matiz, saturação e valor

Criação de TrackBars para matiz, saturação e valor
Criação de TrackBars para matiz, saturação e valor
Criação de TrackBars para matiz, saturação e valor
Criação de TrackBars para matiz, saturação e valor

Agora estaremos criando um total de 6 TrackBars para matiz, saturação e valor. Cada um terá dois, ou seja, 1 para o mínimo e 1 para o máximo. Estaremos usando a função createTrackbar de openCV. Primeiro veremos a sintaxe desta função.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Isso pode ser confuso, mas não se preocupe, pois seguiremos todas as etapas. Tenha em mente que em valores openCV de matiz é 179, saturação é 255 e o valor é 255

1. Criação de TrackBar para hue min:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, vazio)

Neste Hue min é o nome da trackbar, TrackBars é a janela principal, 0 é a posição em que nosso controle deslizante estará e 179 é o intervalo significa que o silder se moverá de 0-179

2. Criação de TrackBar para hue max:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, vazio)

Neste Hue max é o nome da trackbar, TrackBars é a janela principal, 179 é a posição em que nosso controle deslizante estará e 179 é o alcance máximo significa que o silder se moverá de 179-0

3. Da mesma forma, repita os passos para sat min, sat max, val min e val max como mostrado na imagem

A imagem com fundo branco é a imagem de saída. É assim que suas barras de trilha ficarão

Etapa 4: como ler e redimensionar a imagem

Como ler e redimensionar a imagem
Como ler e redimensionar a imagem

cv2.imread () permite que você leia a imagem. É importante lembrar que o local da sua imagem deve estar na mesma pasta onde o programa foi salvo. Colocaremos o loop while porque deve ser executado até que esteja lendo a imagem ou podemos dizer até que a condição seja verdadeira

img = cv2.imread ("ferrari.jpg")

  • Neste eu criei um nome de variável "img" em que estou armazenando a imagem
  • Dentro de cv2.imread escreva o nome da imagem com sua extensão entre aspas duplas

Para redimensionar uma imagem, usaremos a função cv2.resize. Esta parte é opcional, se você deseja redimensionar, você pode usar esta função

Dentro de cv2.resize, primeiro escreva o nome da variável na qual a imagem está armazenada e, em seguida, sua largura e altura

Etapa 5: Lendo os valores da barra de controle para aplicá-los a uma imagem

Lendo os valores da barra de controle para aplicá-los a uma imagem
Lendo os valores da barra de controle para aplicá-los a uma imagem
Lendo os valores da barra de controle para aplicá-los a uma imagem
Lendo os valores da barra de controle para aplicá-los a uma imagem

Ok, agora vamos ler os valores da barra de controle para que possamos aplicá-los à nossa imagem. Obteremos os valores usando a função cv2.getTrackbarPos ().

Vamos começar com essa parte …

h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")

Na declaração acima, estou criando um nome de variável h_min, no qual armazenarei o valor de Hue min. Portanto, dentro de cv2.getTrackbarPos, o primeiro argumento seria "Hue min" porque eu quero valores de hue min (a grafia deve ser exatamente igual à da função createTrackbar) e o segundo argumento seria o nome da janela da trackbar à qual pertence.

  • Repita o mesmo processo para h_max e o resto das funções conforme mostrado na imagem acima e, em seguida, imprima todos os valores usando print ()
  • A saída é mostrada na segunda imagem. Ele está imprimindo os valores de h_min, h_max, s_min, s_max, v_min, s_max

Etapa 6: Exibição da imagem e configuração dos limites superior e inferior

Exibindo Imagem e Definindo Limite Superior e Inferior
Exibindo Imagem e Definindo Limite Superior e Inferior

Agora que temos os valores mínimo e máximo de matiz, saturação e valor, usaremos esse valor para filtrar a imagem para que possamos obter a saída de cor específica de uma imagem.

Vamos criar uma máscara para isso usando a função cv2.inRange. E antes disso, definiremos o limite superior e inferior de matiz, saturação e valor

Portanto, crie um nome de variável "inferior" e usando a função numpy array defina o intervalo de min para todos os 3 da seguinte forma

inferior = np.array ([h_min, s_min, v_min])

Repita o mesmo passo para a parte superior

superior = np.array ([h_max, s_max, v_max])

Agora vamos criar uma máscara como a seguir

mask = cv2.inRange (redimensionar, inferior, superior) Dentro de cv2.inRang o primeiro argumento seria a variável na qual minha imagem final é armazenada, o segundo argumento seria o limite inferior e o terceiro argumento seria o limite superior.

Agora vamos mostrar a imagem principal e a máscara. Para exibir usaremos a função cv2.imshow ()

cv2.imshow ("img", resize) Isso é para exibir a imagem principal. O primeiro argumento é o nome da janela que você pode dar qualquer nome que quiser e o segundo argumento é a variável na qual minha imagem principal está armazenada e você deseja exibir.

Da mesma forma, repita as etapas para a máscara

cv2.imshow ("Saída", máscara)

Etapa 7: agora a etapa final

Agora a etapa final
Agora a etapa final

Nesta etapa final iremos extrair a cor do carro e do display.

Eu criei um resultado de nome de variável. Novamente, você pode dar o nome que quiser. Portanto, estaremos usando a função cv2.bitwise_and () na qual adicionaremos as imagens juntos e criaremos uma nova imagem. E onde quer que os pixels de ambas as imagens estejam presentes, será considerado sim ou "1".

resultado = cv2.bitwise_and (redimensionar, redimensionar, máscara = máscara)

  • Neste o primeiro argumento será a nossa imagem
  • O segundo argumento também será nossa imagem original, mas seguido pela máscara aplicada que criamos antes
  • E, finalmente, basta exibir o resultado usando a função imshow

Basta copiar e colar este último passo é apenas um atraso e você pode sair da janela de saída pressionando "a" no teclado

Etapa 8: Resultados finais

Recomendado: