![Projetos básicos do OpenCV: 5 etapas Projetos básicos do OpenCV: 5 etapas](https://i.howwhatproduce.com/images/007/image-18326-j.webp)
Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03
![Projetos Básicos OpenCV Projetos Básicos OpenCV](https://i.howwhatproduce.com/images/007/image-18326-1-j.webp)
Neste projeto, exploramos algumas funcionalidades básicas do OpenCV por meio de 4 projetos simples envolvendo uma transmissão de vídeo ao vivo. São eles: reconhecimento facial, remoção de fundo, renderização visual especial de bordas e aplicação de um efeito de desfoque à transmissão de vídeo ao vivo. Meu principal objetivo ao tentar esses projetos foi simplesmente molhar os pés com a interface OpenCV, já que pretendo me aprofundar no campo da visão computacional
Suprimentos
- Computador executando Python
- Biblioteca CV aberta, biblioteca Numpy, biblioteca tkinter, biblioteca sys
- Câmera para conectar ao computador (se o computador ainda não tiver uma)
- Arquivo python do programa (incluído neste instrutível)
- arquivo xml haarcascade (incluído neste instrutível)
Etapa 1: Função FaceDetect
![Função FaceDetect Função FaceDetect](https://i.howwhatproduce.com/images/007/image-18326-2-j.webp)
![Função FaceDetect Função FaceDetect](https://i.howwhatproduce.com/images/007/image-18326-3-j.webp)
Esta função mostra o vídeo da sua câmera com quadrados verdes em todos os rostos que ela captar. No código, usamos a função cv2. VideoCapture () para armazenar o vídeo que estamos capturando em um objeto chamado "capture". O CAPTURE_INDEX é um número definido pelo seu computador que corresponde ao índice da sua câmera na lista de entrada de vídeo do computador. Se você não tiver uma câmera externa conectada ao computador, 0 ou 1 deve funcionar.
O objeto face_cascade é inicializado usando a função cascadeClassifier e o arquivo "haarcascade_frontalface_default.xml" encontrado no github OpenCV. Usamos este objeto para armazenar os rostos detectados na lista "rostos" como uma entrada de tupla de quatro vias segurando as faces x, coordenada y, largura e altura. Em seguida, desenhamos um retângulo que envolve perfeitamente o rosto usando a função cv2.rectangle
A partir deste vídeo, o OpenCV captura muitas imagens em nosso loop while usando capture.read () e armazena a imagem em um quadro que chamamos de "img". Cada imagem é então interpretada e modificada como desejamos. Para faceDetect, tornamos a imagem cinza usando a função cvtColor que converte qualquer imagem fornecida no primeiro parâmetro para um tipo particular de cor de imagem especificada no segundo parâmetro. A lista de valores aceitáveis para o segundo parâmetro pode ser encontrada online. Em seguida, exibimos a imagem em uma janela chamada "Detectando o rosto" usando a função imshow () que usa uma string para o nome da janela e o quadro da imagem a ser exibido.
Finalmente, esperamos que o usuário insira a tecla q usando a função cv2.waitKey (). A máscara 0xFF é usada como uma convenção para computadores de 64 bits. Depois que o usuário finaliza o fluxo de vídeo, a função faceDetect libera o objeto de captura e, em seguida, destrói todas as outras janelas abertas na interface OpenCV. Todas as outras funções seguem uma estrutura de design semelhante.
Etapa 2: Função BackgroundRemove
![Função BackgroundRemove Função BackgroundRemove](https://i.howwhatproduce.com/images/007/image-18326-4-j.webp)
![Função BackgroundRemove Função BackgroundRemove](https://i.howwhatproduce.com/images/007/image-18326-5-j.webp)
Esta função tenta remover a parte do fundo do nosso vídeo e deixar apenas a imagem do primeiro plano. Pode não funcionar em algumas câmeras, pois elas utilizam uma funcionalidade de ajuste de iluminação que é ativada quando diferentes objetos / focos entram no quadro. Se a função backgroundRemove não funcionar, não se preocupe - pode ser apenas a sua câmera!
Para usar esta função, afaste-se do quadro da câmera e pressione a tecla "d" para capturar a imagem de fundo. É importante que não haja objetos em movimento no plano de fundo que você deseja capturar. Então, podemos voltar para o enquadramento da câmera. Se a função funcionou, o usuário só deve se ver no stream de vídeo da função. Qualquer ruído / manchas pretas na imagem do primeiro plano pode ser resultado do ajuste de iluminação da câmera. Para capturar outro plano de fundo, pressione a tecla "r" para reinicializar e, em seguida, pressione "d" novamente.
Algumas dicas importantes para esta função é o uso do booleano "flag" que é levantado no instante em que o usuário pressiona o botão d. Isso captura o fundo e nos permite removê-lo do vídeo transmitido pela função. Nosso objetivo é armazenar a imagem de fundo em ref_img para que possamos distingui-la da imagem de primeiro plano, que captura qualquer objeto em movimento. Usamos a função cv2.subtract () para subtrair a imagem do primeiro plano da imagem de fundo e vice-versa, e então cancelar quaisquer diferenças minúsculas nas duas imagens imediatamente após. O fundo está escurecido.
O fgmask é feito usando a diferença entre essas duas imagens e então aplicado ao fluxo de vídeo das funções usando a função OpenCV cv2.bitwise_and ().
Etapa 3: Função VideoEdges
![Função VideoEdges Função VideoEdges](https://i.howwhatproduce.com/images/007/image-18326-6-j.webp)
![Função VideoEdges Função VideoEdges](https://i.howwhatproduce.com/images/007/image-18326-7-j.webp)
Esta função retorna nosso stream de vídeo ao vivo, mas as bordas detectáveis são renderizadas em branco, enquanto todo o resto fica escuro. O que distingue esta função das outras funções é a conversão do nosso vídeo original do formato RBG para HSV, que significa matiz, saturação e variação - um método diferente de processamento de luz e cor de um vídeo. Com este método, podemos distinguir mais facilmente os contornos no vídeo, aplicando um filtro (red_low a red_high).
O Canny Edge Detection é usado para detectar as bordas de uma imagem. Ele aceita uma imagem em escala de cinza como entrada e usa um algoritmo de estágios múltiplos.
Etapa 4: Função VideoBlur
![Função VideoBlur Função VideoBlur](https://i.howwhatproduce.com/images/007/image-18326-8-j.webp)
![Função VideoBlur Função VideoBlur](https://i.howwhatproduce.com/images/007/image-18326-9-j.webp)
Esta função é usada para adicionar um efeito de desfoque ao nosso stream de vídeo. A função simples chama a função GaussianBlur cv2 em nosso quadro. Mais informações sobre a função gaussianBlur podem ser encontradas aqui:
opencv-python-tutroals.readthedocs.io/en/l…
Etapa 5: melhorias
A função mais sensível neste projeto é a função de remoção de fundo, pois requer o uso de uma câmera que não possui funcionalidade de ajuste de iluminação. Pode haver um conjunto melhor de funções na biblioteca OpenCV que pode levar em conta esse ajuste de iluminação e remover suavemente o fundo (semelhante a uma tela verde).
Também podemos utilizar outras funções de detecção de rosto que podem produzir objetos com mais funcionalidade além de apenas retornar as coordenadas (x, y). Talvez um programa de reconhecimento facial com a capacidade de lembrar rostos não fosse muito difícil de implementar.
A função de desfoque pode ser mais customizada por meio do controle intuitivo pelo usuário. Por exemplo, o usuário pode querer ajustar a intensidade do efeito de desfoque ou selecionar uma área específica dentro do quadro para desfocar.
Recomendado:
Os 3 principais projetos de eletrônicos incríveis usando o transistor D-882: 9 etapas
![Os 3 principais projetos de eletrônicos incríveis usando o transistor D-882: 9 etapas Os 3 principais projetos de eletrônicos incríveis usando o transistor D-882: 9 etapas](https://i.howwhatproduce.com/images/002/image-3733-j.webp)
Os 3 principais projetos eletrônicos incríveis usando o transistor D-882: JLCPCB é a maior empresa de protótipos de PCB da China e um fabricante de alta tecnologia especializado em protótipos de PCB rápidos e produção de pequenos lotes de PCB, com mais de 10 anos de experiência na fabricação de PCBs. Eles são capazes de fornecer uma solução econômica
Como fazer um RADAR usando o Arduino para o projeto de ciências. Melhores projetos do Arduino: 5 etapas
![Como fazer um RADAR usando o Arduino para o projeto de ciências. Melhores projetos do Arduino: 5 etapas Como fazer um RADAR usando o Arduino para o projeto de ciências. Melhores projetos do Arduino: 5 etapas](https://i.howwhatproduce.com/images/001/image-586-26-j.webp)
Como fazer um RADAR usando o Arduino para o projeto de ciências. Melhores projetos do Arduino: Oi amigos, neste instrutível irei mostrar a vocês como fazer um sistema de radar incrível construído usando o arduino nano. Este projeto é ideal para projetos científicos e você pode facilmente fazer isso com muito menos investimento e chances de ganhar o prêmio é ótimo para
Receber notificações por e-mail de seus projetos de IoT: 6 etapas
![Receber notificações por e-mail de seus projetos de IoT: 6 etapas Receber notificações por e-mail de seus projetos de IoT: 6 etapas](https://i.howwhatproduce.com/images/002/image-4823-7-j.webp)
Receber notificações por e-mail de seus projetos de IoT: Notificações por e-mail do programa conectando seus projetos de IoT ao Adafruit IO e IFTTT. Publiquei alguns projetos de IoT. Espero que você tenha visto, senão eu convido você para o meu perfil e verificá-los.Eu queria receber algumas notificações quando uma variável
Um legal hack do touchpad do laptop para projetos do Arduino !: 18 etapas (com imagens)
![Um legal hack do touchpad do laptop para projetos do Arduino !: 18 etapas (com imagens) Um legal hack do touchpad do laptop para projetos do Arduino !: 18 etapas (com imagens)](https://i.howwhatproduce.com/images/003/image-6102-j.webp)
Um legal hack de touchpad de laptop para projetos Arduino !: Um tempo atrás, quando eu estava mexendo em um touchpad PS / 2 com um microcontrolador Arduino, descobri que duas de suas conexões onboard podem ser usadas como entradas digitais. Neste Instructable, vamos aprender como podemos utilizar um add do touchpad PS / 2
10 projetos básicos do Arduino para iniciantes! Faça pelo menos 15 projetos com uma única placa !: 6 etapas
![10 projetos básicos do Arduino para iniciantes! Faça pelo menos 15 projetos com uma única placa !: 6 etapas 10 projetos básicos do Arduino para iniciantes! Faça pelo menos 15 projetos com uma única placa !: 6 etapas](https://i.howwhatproduce.com/images/006/image-15858-9-j.webp)
10 projetos básicos do Arduino para iniciantes! Faça pelo menos 15 projetos com uma única placa !: Projeto Arduino & Tutorial Board; Inclui 10 projetos básicos do Arduino. Todos os códigos-fonte, o arquivo Gerber e muito mais. Sem SMD! Solda fácil para todos. Componentes fáceis removíveis e substituíveis. Você pode fazer pelo menos 15 projetos com um único bo