6.5 KiB
Capturar uma imagem - Hardware Virtual IoT
Nesta parte da lição, você adicionará um sensor de câmera ao seu dispositivo IoT virtual e lerá imagens dele.
Hardware
O dispositivo IoT virtual usará uma câmera simulada que envia imagens de arquivos ou da sua webcam.
Adicionar a câmera ao CounterFit
Para usar uma câmera virtual, você precisa adicionar uma ao aplicativo CounterFit.
Tarefa - adicionar a câmera ao CounterFit
Adicione a câmera ao aplicativo CounterFit.
-
Crie um novo aplicativo Python no seu computador em uma pasta chamada
fruit-quality-detector
com um único arquivo chamadoapp.py
e um ambiente virtual Python, e adicione os pacotes pip do CounterFit.⚠️ Você pode consultar as instruções para criar e configurar um projeto Python do CounterFit na lição 1, se necessário.
-
Instale um pacote adicional do Pip para adicionar um shim do CounterFit que pode se comunicar com sensores de câmera simulando parte do pacote Picamera Pip. Certifique-se de instalar isso a partir de um terminal com o ambiente virtual ativado.
pip install counterfit-shims-picamera
-
Certifique-se de que o aplicativo web CounterFit esteja em execução.
-
Crie uma câmera:
-
Na caixa Create sensor no painel Sensors, abra o menu suspenso Sensor type e selecione Camera.
-
Defina o Name como
Picamera
. -
Selecione o botão Add para criar a câmera.
A câmera será criada e aparecerá na lista de sensores.
-
Programar a câmera
O dispositivo IoT virtual agora pode ser programado para usar a câmera virtual.
Tarefa - programar a câmera
Programe o dispositivo.
-
Certifique-se de que o aplicativo
fruit-quality-detector
esteja aberto no VS Code. -
Abra o arquivo
app.py
. -
Adicione o seguinte código ao início do
app.py
para conectar o aplicativo ao CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Adicione o seguinte código ao seu arquivo
app.py
:import io from counterfit_shims_picamera import PiCamera
Este código importa algumas bibliotecas necessárias, incluindo a classe
PiCamera
da biblioteca counterfit_shims_picamera. -
Adicione o seguinte código abaixo disso para inicializar a câmera:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Este código cria um objeto PiCamera, define a resolução para 640x480. Embora resoluções mais altas sejam suportadas, o classificador de imagens funciona com imagens muito menores (227x227), então não há necessidade de capturar e enviar imagens maiores.
A linha
camera.rotation = 0
define a rotação da imagem em graus. Se você precisar girar a imagem da webcam ou do arquivo, ajuste conforme necessário. Por exemplo, se você quiser alterar a imagem de uma banana em uma webcam no modo paisagem para o modo retrato, definacamera.rotation = 90
. -
Adicione o seguinte código abaixo disso para capturar a imagem como dados binários:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Este código cria um objeto
BytesIO
para armazenar dados binários. A imagem é lida da câmera como um arquivo JPEG e armazenada neste objeto. Este objeto possui um indicador de posição para saber onde está nos dados, permitindo que mais dados sejam escritos no final, se necessário. Assim, a linhaimage.seek(0)
move esta posição de volta ao início para que todos os dados possam ser lidos posteriormente. -
Abaixo disso, adicione o seguinte para salvar a imagem em um arquivo:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Este código abre um arquivo chamado
image.jpg
para escrita, depois lê todos os dados do objetoBytesIO
e os escreve no arquivo.💁 Você pode capturar a imagem diretamente em um arquivo em vez de um objeto
BytesIO
passando o nome do arquivo para a chamadacamera.capture
. O motivo para usar o objetoBytesIO
é que, mais tarde nesta lição, você poderá enviar a imagem para o seu classificador de imagens. -
Configure a imagem que a câmera no CounterFit capturará. Você pode definir a Source como File e fazer upload de um arquivo de imagem, ou definir a Source como WebCam, e as imagens serão capturadas da sua webcam. Certifique-se de selecionar o botão Set após selecionar uma imagem ou sua webcam.
-
Uma imagem será capturada e salva como
image.jpg
na pasta atual. Você verá este arquivo no explorador do VS Code. Selecione o arquivo para visualizar a imagem. Se precisar de rotação, atualize a linhacamera.rotation = 0
conforme necessário e tire outra foto.
💁 Você pode encontrar este código na pasta code-camera/virtual-iot-device.
😀 Seu programa de câmera foi um sucesso!
Aviso Legal:
Este documento foi traduzido utilizando o serviço de tradução por IA Co-op Translator. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.