Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 19, 2021 05:07 pm GMT

Script para abrir webcam com Python utilizando OpenCV

J pensou em desenvolver algum projetinho que precisa de uma captura de imagem em tempo real, mas no sabe por onde comear? Nesse post vamos trazer uma soluo simples de como fazer um script utilizando Python3 e OpenCV para abrir a sua webcam!

Um pouco sobre a biblioteca OpenCV

A OpenCV uma biblioteca de cdigo aberto desenvolvida pela Intel nos anos 2000, inicialmente nas linguagens C e C++, com o objetivo de melhorar o aparato disponvel para o desenvolvimento de aplicaes, assim como nos estudos e pesquisas na rea de Viso Computacional. Hoje em dia ela ainda referncia e se tornou multiplataforma e multilinguagem, isto , podemos utiliz-la em aplicaes nos mais diversos sistemas operacionais e linguagens de programao.

OpenCV + Python == "PERFEIO"

O OpenCV no foi apenas desenvolvido para melhorar a experincia em questo de otimizao das tcnicas e dos algoritmos de processamento de imagem, mas tambm para fcil utilizao da biblioteca pelos interessados.
Quando unimos isso ao Python temos um ambiente perfeito para explorar a criatividade utilizando imagens: biblioteca simples e linguagem de sintaxe simples!
Quer provas? Continua lendo este post!

Instalando o OpenCV na sua mquina

Para iniciar, precisaremos instalar o OpenCV na nossa mquina. Para isso, voc pode instalar o pacote via pip com o comando abaixo:

pip install opencv-python

ou

pip3 install opencv-python

Lembrando que sempre bom considerar a criao de um ambiente virtual para seus projetos! Assim, caso voc queira compartilhar e receber contribuies, ir ajudar bastante na configurao local do projeto na mquina do contribuidor, alm de evitar que alguns erros se tornem incapazes de serem resolvidos. Caso no saiba como faz-lo, consulte este link da documentao do Python para saber mais.

Mo na massa!

Com o OpenCV instalado na mquina podemos partir para o cdigo! Crie um arquivo .py, abra o editor de sua preferncia e vamos comear!

Antes de tudo, vamos importar a nossa biblioteca:

import cv2 as cv

Com o pacote devidamente importado, poderemos partir para a captura da imagem pela webcam do seu computador!

Abrindo a webcam com cdigo!

Abrir a webcam com um script Python mais fcil do que voc imagina! Vamos utilizar OpenCV para capturar imagens em tempo real.

Passo 1:

O primeiro passo instanciar um objeto VideoCapture. Essa classe do OpenCV responsvel por realizar a captura de frames em um vdeo, o qual passamos o caminho como parmetro na criao do objeto. No caso da leitura da webcam, precisamos passar o seu ID de referncia (se voc usa um laptop, o ID da sua cmera primria 0):

camera = cv.VideoCapture(0)

Passo 2:

Para iniciar o segundo passo, importante que voc entenda o que um vdeo. De uma forma bem genrica, um vdeo uma sucesso de imagens que imprimem uma sensao de movimento. A cada uma dessas imagens damos o nome de quadros (ou frames).

Fazendo o paralelo disso com lgica de programao, qual a estrututa que utilizamos para fazer uma repetio sucessiva de alguma coisa?

Se voc respondeu lao, est mais que correto! Mas, qual lao escolher, for ou while?

Vamos pensar: estamos fazendo uma captura de vdeo em tempo real com a nossa webcam, ento no sabemos quando a captura ir parar, desse modo enquanto estiver rodando nosso script eu capturo um frame novo. Matamos a charada e vamos de loop while!

Passando essa ideia para Python, temos algo do tipo:

rodando = Truewhile rodando:    # Captura um frame    pass

Passo 3:

Agora podemos partir para todo o cdigo dentro do loop!

Para fazer a captura do frame da vez, usaremos o mtodo read() no nosso objeto VideoCapture. Esse mtodo retorna uma tupla com dois valores: um booleano referente ao status de captura e o prprio frame no formato de um array NumPy.

O valor do status muito til para quando estamos lendo um vdeo passado por um caminho, visto que, quando chegamos no ltimo frame do mesmo, o prximo no poder ser capturado, o retorno desse valor ser False e poderemos parar a execuo do loop sem o lanamento de uma exceo. Alm disso, pode haver algum problema na captura da webcam e isso ser indicado por esse retorno, por isso, vamos utiliz-lo.

J o frame essencial, j que o que mais nos interessa! A imagem retornada ser o alvo dos processamentos feitos durante a iterao do loop e tambm ser jogada na sada.

Faremos isso da seguinte forma, dissociando os valores retornados em duas variveis:

#...while rodando:    status, frame = camera.read()

Passo 4:

Chegou o momento de falarmos das condies de parada.

Queremos parar a captura em dois casos:

  1. Em casos de erro
  2. Caso eu apenas queira parar de executar o script

Vamos unir essas duas condies de parada em apenas uma condio:

#...    if not status or cv.waitKey(1) & 0xff == ord('q'):        rodando = False

Parece estranho, mas no difcil de entender. O que estamos querendo dizer basicamente "se deu algo errado na captura da imagem ou o usurio apertou a tecla 'q', ento pare o script!".

A funo cv.waitKey(1) espera que um evento de tecla acionada acontea e, caso ocorra, ela retorna o valor da tecla pressionada segundo o padro UTF-8. Para comparar se a tecla pressionada foi a 'q', combinamos o retorno dessa funo com a constante hexadecimal 0xff e utilizamos a funo padro de python ord('q'), que retorna o valor de uma string passada como parmetro em UTF-8.

Caso ao menos uma dessas condies seja satisfeita, a nossa varivel rodando passa a receber False e na prxima iterao h a parada do loop.

Passo 5:

Nesse estgio j temos o objeto que captura nossa imagem da webcam, a imagem capturada devidamente lida e tambm uma condio de parada do nosso loop. S nos resta uma coisa: jogar essa imagem na sada!

Para isso utilizaremos a funo cv.imshow() do OpenCV. Essa funo cria recebe dois parmetros: uma string referente ao nome da janela e o array que se refere a imagem que queremos mostrar. Temos tudo que precisamos!

Para finalmente enxergarmos a captura em tempo real, escrevemos a seguinte linha dentro do loop:

#...    cv.imshow("Camera", frame)

Finalmente, o script!

Tudo isso resulta em um script de apenas 8 linhas!

import cv2 as cv camera = cv.VideoCapture(0)rodando = Truewhile rodando:    status, frame = camera.read()    if not status or cv.waitKey(1) & 0xff == ord('q'):        rodando = False    cv.imshow("Camera", frame)

Com isso temos tudo que voc precisa para capturar imagens em tempo real utilizando um script simples em Python junto com OpenCV!

E o que fazer com esse script?

Existem vrias possibilidades de aproveitar essa base, que vo desde detectores at registros de imagens para alguma aplicao ou sistema feito em Python.

Muito obrigada por ter lido at o fim! Se esse post te inspirou a criar alguma coisa, no se esquece de postar nas tuas redes e me marcar, que eu quero ver ~e quem sabe eu volte aqui com mais coisas legais para fazer com OpenCV~!

Minhas redes:
LinkedIn: Maria Eduarda de Azevedo Silva
Twitter: @ddt_azevedo
GitHub: MariaEduardaDeAzevedo


Original Link: https://dev.to/opendevufcg/script-para-abrir-webcam-com-python-utilizando-opencv-f26

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To