Comece em 10 minutos

Tutorial em vídeo 1 - Introdução ao OpenMV: https://singtown.com/learn/688
Tutorial em vídeo 2 - Introdução ao unboxing: https://singtown.com/learn/49985
Tutorial em vídeo 3 - Instalação e uso de drivers e IDEs: https://singtown.com/learn/49989/

Baixar o software

Site oficial na China: http://openmv.cc (clique em Download de Software)

Site oficial nos Estados Unidos: https://openmv.io/pages/download

Windows

Depois de baixar, continue clicando em Avançar, e a instalação será concluída normalmente.\

Se não houver uma janela de imagem, você pode arrastá-la para fora pela direita.

Instalar o driver

Conecte o OpenMV ao computador.\ Em circunstâncias normais, o driver será instalado automaticamente, e não é necessário instalar nada manualmente. No gerenciador de dispositivos, você verá:

Mas em alguns computadores, o driver pode não ser instalado automaticamente.\ Nesse caso, aparecerá um ponto de exclamação no gerenciador de dispositivos, indicando que o driver não foi instalado normalmente.

Nesse caso, você precisa instalá-lo manualmente.\ Primeiro baixe o driver: https://dl.singtown.com/openmv/openmv_windowsdriver.zip

Descompacte na área de trabalho, depois clique com o botão direito no dispositivo no gerenciador de dispositivos, e clique em Atualizar Driver:

Falha na instalação do driver no Windows

Se a seguinte situação ocorrer (isso raramente acontece, é uma falha do computador):\

A instalação do driver OpenMV falhou. Em 90% dos casos, é um problema do computador; sistemas operacionais simplificados e o uso de alguns softwares de otimização geralmente são a causa desse tipo de problema. A solução para o driver do OpenMV é semelhante à do Arduino.

Isso ocorre porque a versão simplificada do sistema Windows apaga algumas informações de driver pouco comuns.

Referência de falhas:\ https://forum.singtown.com/topic/230

Por fim, recomenda-se:

  • Ao comprar um computador, compre um computador com sistema original.
  • Ative o Windows Update (ele vem ativado por padrão, não o desative).
  • Mesmo que você use um sistema pirata, baixe a versão pura e completa do MSDN.
  • Nunca use o Ghost para instalar o sistema! 90% dos problemas de driver são causados pelo Ghost.

MacOS

Depois de baixar o software da IDE, clique duas vezes no instalador. Basta continuar clicando em Avançar.

Se aparecer uma mensagem dizendo que você só pode instalar aplicativos da App Store e aplicativos aprovados, defina como Qualquer Fonte em Segurança e Privacidade.\

Ubuntu

O Ubuntu precisa conceder permissões ao arquivo baixado. Depois, clique duas vezes para instalar.

Executar o hello world!

Primeiro, certifique-se de que a IDE e o driver estejam instalados corretamente.

Conecte o OpenMV ao computador por meio de um cabo USB, e um drive USB aparecerá

Abra a IDE do OpenMV.

Preste atenção nesta imagem.

  • Clique em Connect
  • e depois clique em Run

A imagem é exibida corretamente na janela de imagem no canto superior direito.\ Clique no Serial Terminal na parte inferior, e uma janela de terminal aparecerá.\ Ao mesmo tempo, dados serão impressos no Serial Terminal. Essa é a taxa de quadros. É o resultado da execução de print(clock.fps()) na linha 17 do código.

Rastreando a bola

Apague todo o conteúdo na caixa de edição e substitua pelo seguinte código:

# Exemplo de detecção de blob de cor
#
# Este exemplo mostra como usar a função find_blobs() para encontrar blocos de cor na imagem
# A cor procurada neste exemplo é o verde escuro

import csi, image, time
csi0 = csi.CSI()

# Exemplo de rastreamento de cor: é essencial controlar a luz do ambiente e mantê-la estável.
green_threshold   = (   0,   80,  -70,   -10,   -0,   30)
#Define o limiar de verde; os valores entre parênteses são os máximos e mínimos de L, A, B (minL, maxL, minA,
# maxA, minB, maxB); os valores LAB são selecionados nos três gráficos de coordenadas à esquerda da imagem. Se for uma
#imagem em escala de cinza, basta definir os dois números (min, max).

csi0.reset() # Inicializa o sensor de câmera
csi0.pixformat(csi.RGB565) # Formato RGB565.
csi0.framesize(csi.QQVGA) # Usa QQVGA para maior velocidade
csi0.snapshot(time = 2000) # Aguarda 2000ms para que as novas configurações tenham efeito, e ajusta automaticamente o balanço de branco
csi0.auto_gain(False) # Desliga o ganho automático. Vem ativado por padrão; no reconhecimento de cor, é essencial desligar o balanço de branco.
csi0.auto_whitebal(False)
#Desliga o balanço de branco. Ele vem ativado por padrão; no reconhecimento de cor, é essencial desligá-lo.
clock = time.clock() # Rastreia a taxa de quadros

while(True):
    clock.tick() # Rastreia os milissegundos decorridos entre snapshots().
    img = csi0.snapshot() # Obtém uma imagem do sensor fotográfico

    blobs = img.find_blobs([green_threshold])
    #find_blobs(thresholds, invert=False, roi=Auto), thresholds é o limiar de cor,
    #é uma tupla que precisa ser envolvida por colchetes [ ]. invert=1 inverte o limiar
    #de cor; invert=False (padrão) não inverte. roi define a região de interesse do
    #reconhecimento de cor; roi é uma tupla, roi = (x, y, w, h), representando um
    #retângulo de largura w e altura h a partir do vértice superior esquerdo (x,y);
    #se roi não for definido, o padrão é a imagem inteira.
    #Esta função retorna uma lista: [0] representa a coordenada x do vértice superior
    #esquerdo da área de cor alvo detectada, [1] representa a coordenada y do vértice
    #superior esquerdo, [2] representa a largura da área alvo, [3] representa a altura
    #da área alvo, [4] representa o número de pixels da área alvo, [5] representa a
    #coordenada x do centro da área alvo, [6] representa a coordenada y do centro da
    #área alvo, [7] representa o ângulo de rotação da área de cor alvo (em radianos,
    #tipo float; os outros elementos da lista são inteiros), [8] representa o número
    #de alvos que se cruzam com esta área alvo, [9] representa o índice da cor (que
    #pode ser usado para identificar qual limiar de cor foi usado para detectar essa
    #área).
    if blobs:
    #Se a cor alvo foi encontrada
        for b in blobs:
        #Itera sobre as áreas de cor alvo encontradas
            # Draw a rect around the blob.
            img.draw_rectangle(b[0:4]) # rect
            #Marca a área de cor alvo com um retângulo
            img.draw_cross((b[5], b[6])) # cx, cy
            #Desenha uma marca em forma de cruz no centro da área de cor alvo

    print(clock.fps()) # Observação: quando o OpenMV está conectado ao computador, a taxa de quadros cai para aproximadamente metade
    #Se desconectar do computador, a taxa de quadros aumenta

Depois de executar o programa

Este programa vai procurar blocos de cor com base no limiar de green_threshold.

Alterar o limiar

Então, como você altera esse limiar por conta própria? Como sabemos o limiar de cor do nosso objeto?

  • Projeto de lista de números: primeiro encontre a cor alvo na câmera e circule com um retângulo a cor alvo no framebuffer clicando com o botão esquerdo
  • No diagrama de coordenadas abaixo do framebuffer, selecione o Espaço de Cor LAB.

  • Os três diagramas de coordenadas representam os valores LAB das cores na área retangular circulada, e selecione os valores máximo e mínimo dos três diagramas de coordenadas, ou seja, (0, 60, -70, -10, -0, 30)

Sistema de arquivos

O sistema de arquivos é um recurso particularmente notável do OpenMV (ou do MicroPython). O que é um sistema de arquivos? Em termos simples, várias pastas e arquivos são organizados em uma estrutura de árvore, ou seja, é o seu pen drive USB. E você pode usar o caminho no código para ler arquivos, criar arquivos, e assim por diante.

Operação off-line

Anexo 2 do tutorial em vídeo - Operação off-line: https://singtown.com/video

Então surge a pergunta? Qual é a utilidade de o OpenMV suportar um sistema de arquivos?

A resposta é: é bastante conveniente!\ O OpenMV virtualiza a memória Flash embutida em um sistema de arquivos. Quando você conecta o OpenMV ao computador, o computador exibirá um pen drive USB! Dentro está o sistema de arquivos do OpenMV. Quando você quiser gravar o firmware, basta copiar o arquivo de script para o main.py desse "pen drive". Toda vez que ligar, o OpenMV executará automaticamente o main.py de dentro, para que possa funcionar off-line.

Download com um clique

Na barra de ferramentas, clique em salvar o script aberto no OpenMV Cam (como main.py), e a IDE salvará automaticamente o arquivo atual como main.py, o que é muito conveniente.

Alimentação

O OpenMV tem dois terminais de entrada de alimentação:

  • VIN (às vezes também marcado como VCC)
  • Entrada USB

A entrada VIN é de 3,6V~5V, recomenda-se 5V.\ USB e VIN podem ser alimentados ao mesmo tempo.

O OpenMV tem um terminal de saída de alimentação:

  • 3,3V, essa tensão é fornecida pelo regulador do OpenMV, usada para alimentar outros sensores. Observação: Não alimente diretamente com 3,3V sem a proteção do chip interno, pois é fácil queimar.

Cartão SD

E se o meu código tiver 100.000 linhas e a memória Flash embutida não for suficiente? E se eu quiser salvar imagens?

A resposta é: você pode usar um cartão SD!

Então, como usar o cartão SD? O cartão SD também é um sistema de arquivos. Quando o dispositivo é ligado, se o cartão SD estiver inserido, o sistema de arquivos do cartão SD substituirá automaticamente o sistema de arquivos da Flash embutida. Toda vez que for ligado, o main.py no cartão SD será executado. Não é muito intuitivo e conveniente? A capacidade máxima do cartão SD é 32G.

results matching ""

    No results matching ""