6.5 KiB
Capturar uma imagem - Hardware IoT Virtual
Nesta parte da lição, irá adicionar um sensor de câmara ao seu dispositivo IoT virtual e ler imagens a partir dele.
Hardware
O dispositivo IoT virtual utilizará uma câmara simulada que envia imagens a partir de ficheiros ou da sua webcam.
Adicionar a câmara ao CounterFit
Para usar uma câmara virtual, precisa de adicionar uma à aplicação CounterFit.
Tarefa - adicionar a câmara ao CounterFit
Adicione a câmara à aplicação CounterFit.
-
Crie uma nova aplicação Python no seu computador numa pasta chamada
fruit-quality-detector
com um único ficheiro chamadoapp.py
e um ambiente virtual Python, e adicione os pacotes pip do CounterFit.⚠️ Pode consultar as instruções para criar e configurar um projeto Python do CounterFit na lição 1, se necessário.
-
Instale um pacote Pip adicional para adicionar um shim do CounterFit que pode comunicar com sensores de câmara simulando algumas funcionalidades do pacote Pip Picamera. Certifique-se de que está a instalar isto a partir de um terminal com o ambiente virtual ativado.
pip install counterfit-shims-picamera
-
Certifique-se de que a aplicação web do CounterFit está em execução.
-
Crie uma câmara:
-
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âmara.
A câmara será criada e aparecerá na lista de sensores.
-
Programar a câmara
O dispositivo IoT virtual pode agora ser programado para usar a câmara virtual.
Tarefa - programar a câmara
Programe o dispositivo.
-
Certifique-se de que a aplicação
fruit-quality-detector
está aberta no VS Code. -
Abra o ficheiro
app.py
. -
Adicione o seguinte código ao início do ficheiro
app.py
para ligar a aplicação ao CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Adicione o seguinte código ao ficheiro
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 deste para inicializar a câmara:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Este código cria um objeto PiCamera e define a resolução para 640x480. Embora resoluções mais altas sejam suportadas, o classificador de imagens funciona com imagens muito menores (227x227), por isso não é necessário capturar e enviar imagens maiores.
A linha
camera.rotation = 0
define a rotação da imagem em graus. Se precisar de rodar a imagem da webcam ou do ficheiro, ajuste este valor conforme necessário. Por exemplo, se quiser alterar a imagem de uma banana numa webcam em modo paisagem para modo retrato, definacamera.rotation = 90
. -
Adicione o seguinte código abaixo deste 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âmara como um ficheiro JPEG e armazenada neste objeto. Este objeto tem um indicador de posição para saber onde está nos dados, permitindo que mais dados sejam escritos no final, se necessário. A linhaimage.seek(0)
move esta posição de volta para o início, para que todos os dados possam ser lidos mais tarde. -
Abaixo deste, adicione o seguinte para guardar a imagem num ficheiro:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Este código abre um ficheiro chamado
image.jpg
para escrita, depois lê todos os dados do objetoBytesIO
e escreve-os no ficheiro.💁 Pode capturar a imagem diretamente para um ficheiro em vez de usar um objeto
BytesIO
, passando o nome do ficheiro para a chamadacamera.capture
. A razão para usar o objetoBytesIO
é que, mais tarde nesta lição, poderá enviar a imagem para o seu classificador de imagens. -
Configure a imagem que a câmara no CounterFit irá capturar. Pode definir a Source como File e carregar um ficheiro 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 escolher uma imagem ou a sua webcam.
-
Uma imagem será capturada e guardada como
image.jpg
na pasta atual. Verá este ficheiro no explorador do VS Code. Selecione o ficheiro para visualizar a imagem. Se precisar de rotação, atualize a linhacamera.rotation = 0
conforme necessário e tire outra fotografia.
💁 Pode encontrar este código na pasta code-camera/virtual-iot-device.
😀 O programa da sua câmara 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 automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução.