You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/br/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md

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.

  1. Crie um novo aplicativo Python no seu computador em uma pasta chamada fruit-quality-detector com um único arquivo chamado app.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.

  2. 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
    
  3. Certifique-se de que o aplicativo web CounterFit esteja em execução.

  4. Crie uma câmera:

    1. Na caixa Create sensor no painel Sensors, abra o menu suspenso Sensor type e selecione Camera.

    2. Defina o Name como Picamera.

    3. Selecione o botão Add para criar a câmera.

    As configurações da câmera

    A câmera será criada e aparecerá na lista de sensores.

    A câmera criada

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.

  1. Certifique-se de que o aplicativo fruit-quality-detector esteja aberto no VS Code.

  2. Abra o arquivo app.py.

  3. 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)
    
  4. 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.

  5. 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, defina camera.rotation = 90.

  6. 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 linha image.seek(0) move esta posição de volta ao início para que todos os dados possam ser lidos posteriormente.

  7. 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 objeto BytesIO 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 chamada camera.capture. O motivo para usar o objeto BytesIO é que, mais tarde nesta lição, você poderá enviar a imagem para o seu classificador de imagens.

  8. 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.

    CounterFit com um arquivo definido como fonte de imagem e uma webcam mostrando uma pessoa segurando uma banana em uma pré-visualização da webcam

  9. 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 linha camera.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.