Spisu treści:

Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 kroków
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 kroków

Wideo: Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 kroków

Wideo: Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 kroków
Wideo: 🌟 ENG SUB | Versatile Mage | Full Version EP37-48 | Yuewen Animation 2024, Czerwiec
Anonim
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android

DESCRIÇÃO

O intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes indoor como casas ou centra handlowe i aeroportos.

Locomoçãoo em ambientes já mapeados pode ou nãoo ser mindado um problema bem resolvido. Aplikacja jest dostępna w App Store dla tej samej społeczności, która jest dostępna dla trzech osób, które nie mają uprawnień do EUA i LowViz Guide. Além do limitado número de locais, tal aplicativo não detecta possíveis obstáculos e pessoas que possam estar no caminho do usuário. Assim, a missão deste projeto é, através de visão computacional e processamento de imagem, identificar possíveis obstáculos que possam surgir ao longo do caminho do usuário e poder recalcular o caminho a ser seguido danrio i odependemn Na prática, o projeto, embora ainda incompleto, complete em integrar um aplicativo de onde se pode submeter ou desenhar uma planta baixa do local de interesse, seja uma casa ou shopping. Com a placa integrada a uma câmera na cintura do usuário, e um fone de ouvido, o aplicativo calcula a posição no ambiente e allowe o usuário definir para onde quer ir e dá comandos de voz para movimentação. A câmera, quando detecta um obstáculo a frente, pode recalcular o caminho do usuário. Como dizia Hugh Herr: „Nenhum indivíduo é incapaz, o que existe é falta de desenvolvimento tecnológico para capacitar e nos tornar iguais”.

Zagnieżdżone projekty usaremos i Dragonboard 410c, porque precyzyjny sprzęt um que tenha pojemność fazer lub przetwarzanie obrazów w czasie rzeczywistym (sem ter de competir z outras aplicações como seria no celular) i ao mesmo tempo seja de Baixo custo.

Krok 1: Materiały

Materiały
Materiały

Para este projeto vamos utilizar:

- uma placa Qualcomm Dragonboard 410c;

- biblioteca de processamento de imagem OpenCV (wersja 3.1);

- Camera que se comunique com a placa (usaremos na verdade um celular android com o aplicativo IP Webcan);

- celular com system Android para o aplicativo;

Krok 2: Instalando OpenCV Na Dragonboard

Instalando OpenCV Na Dragonboard
Instalando OpenCV Na Dragonboard

Com linux instalado na placa, siga os procedimentos padrões para se instalar a biblioteca de processamento de imagem - OpenCV - bez urządzenia. Siga as instruções deste link:

docs.opencv.org/3.0-beta/doc/tutorials/intr…

Krok 3: Połącz kamerę z tablicą smoczkową

Połącz kamerę z Dragonboard
Połącz kamerę z Dragonboard

Precisamos łączy się z kamerą que serão os olhos deficiente com a placea desenvolvimento Dragonboard 410c. Existem vários jeitos de fazer isso. Dragonboard possui entrada para flatcables, ou seja, é compatível com as câmeras usadas comumente em placas como a Raspberry Pi.

Zagnieżdżony projekt, zoptymalizuj użycie kamery w Moto G 3ª Geração com o aplicativo IP Webcam (dostępna w Google Play), która pozwala na przesyłanie obrazu w sieci Wi-Fi.

Abaixo um programa que faz aquisição simples da imagem usando a biblioteca opencv. O link passado como parametro no construtor do objeto VideoCapture é o IP do celular (indicado no aplicativo) + „/videofeed”. Na imagem acima, você encontra onde está o IP zrobić seu celular.

A aquisição pode ser difícil nas versões anteriores a 3.1 da opencv, caso você não tenha conseguido compilar. Se você conectar uma câmera pela entrada de câmeras da dragonboard basta colocar como parametro o valor zero („0”), que significa que você quer procurar a câmera default.

Krok 4: Desenvolver Software De Processamento De Imagens Que Toma Decisões

Image
Image
Desenvolver Software De Processamento De Imagens Que Toma Decisões
Desenvolver Software De Processamento De Imagens Que Toma Decisões
Desenvolver Software De Processamento De Imagens Que Toma Decisões
Desenvolver Software De Processamento De Imagens Que Toma Decisões

Há três programas em anexo, o identificadorDeObstáculos.cpp, o MostraContornoWebcam.cpp e o VídeoCadeiraSlavo.cpp (estes dois últimos para teste e entendimento da técnica do software).

Objaśnienie: Idea identyfikacji tożsamości w determinacji dos contornos mais drásticos nas imagens do wideo, ou seja, o código identifica mudanças drásticas de cores na imagem i conclui que isso seja um contorcom krok). Estando a câmera na barriga do usuário, levemente inclinada para o chão, konforme o usuário se locomove, o programa identifica a existência de um objeto (seja uma pessoa ou uma cadeira por exemplo) e manda o nacaso en de parajedo região especificada (caminho do usuário) (vide imagem do contorno da cadeira - caso o usuário se aproxime da cadeira haverá pikseli brancos na região verde que determinam condição de parada). Dessa forma, sem a adição de filtros ao tipo de chão, para o funcionamento dessa versão simplificada, é necessário um chão razoavelmente homogeneo, de forma que os detalhes do chão não sejam thoughtados contornos.

Obs. é possível ajustar a variável lowThreshold do código para um valor de 0 (mais sensitivo) e 100 (menos sensitivo ao contorno). O valor sugerido é 60 para chão em geral.

Funcionamento: o identificadorDeObstáculos.cpp recebe um wideo da rede wifi através do sparkfun que deve ser um wideo de um celular acoplado a barriga do usuário. O código manda condições de parada á um aplicativo de um outro celular que usuário está usando. Idealmente manda-se comandos de voz de parada parada o usuário.

Obs: Altere o código de acordo para especificar de onde os wideo são recebidos e para qual android as informações são encaminhadas. Os tipos de alterações são especificadas no próprio código (assim como nos programas de teste) comentados no início do programa.

Para saber mais sobre bordas de Canny e limiarização, alem de outros topicos de visão computacional, recomenda-se procurar a documentação oficjalny da OpenCV.

Krok 5: Fazer Aplicativo Que Repassa As Informações Para O Deficiente Visual

Para reproduzir este projeto é necessário criar um banco de dados no site data.sparkfun.com, o processo é muito intuitivo de forma que não será dada uma explicação mais detalhada aqui, mas colocaremos o link do banco que criamos ().

Assim que a Dragonboard reconhece que há um obstáculo a sua frente ela posta em um banco de dados construido nie data.sparkfun.com essa informação. O aplicativo faz uma Consulta este banco com o auxílio da classe okhttp3 obtendo jako informações como um Json. Então fazemos um parser desse JSON para encontrarmos o Ultimo dado enviado. Com esse dado em mãos conseguimos dizer se há um obstáculo no caminho, assim é emitido um sinal de voz para o usuário parar. Se o caminho está livre o aplicativo emite um sinal para prosseguir continuamente.

Seguem em anexo as class e Interfaces utilizadas para o projeto, que são explicadas a seguir:

GetJson: é utilizada para fazer um dostać nie banco de dados zrobić data.sparkfun retornando um arquivo em formato json para a aplicação.

JsonDownloader: e onde geramos uma asynctask para de fato utilizarmos a classe GetJson, importância do uso desta classe é para não travarmos a interface to usuário e para isso precisamos criar uma thread in a aplicação.

MainActivity: Nesta classe implementamos i logica da aplicação que continuamente konsulta o banco de dados, e informa or usuário por meio de um audio se ele Precisa para ou pode continuar caminhando.

RequestListener: é uma interface utilizada para forçar o MainActivity ter certas características.

SdmSoundPlayer: esta classe é usada para gerenciar os comandos de voz da aplicação, caso você queira inserir as suas próprias gravações você deve criar uma surowy makaron dentro da makaron res e incluir os de lávo. Feito isso dentro do método initSoundHash() você deve colocar esses arquivos dentro de mSoundHash que é uma tabela Hash. Para usar este audio basta usar o metodo playSound(int key) e passar como parametro a chave escolhida para o sinal de voz.

Ostrzeżenia: essa classe é utilizada para facilitar o parser do json retornado pelo banco de dados.

Seguem em anexo também os arquivos de voz utilizados.

O layout da aplicação skladia de um único botão que funcionava com o método Quit implementado na MainActivity, este método simplesmente forçava a aplicação a parar a consulta no banco de dados.

Qualquer dúvida adicional ou sugestão basta entrar em contato com o autor. Sugestes sao semper bem-vindas =).

O código não está bem comentado, mas acredito que as explicações acima devem ser suficientes para o entendimento do que está acontecendo.

Krok 6: Zasugeruj kontynuację

Poderiamos integrar um sistema de localaização. Existe o Qualcomm iZat SDK que possui um sistema de localização que usa GNSS, acelerômetro, magnetrômetro entre outros, já embutidos no próprio processador Qualcomm Snapdragon (przedstawiciel dla większej liczby celów). No entanto, havia pouca documentação e necessitava de testes mais demorados.

Também gostariamos de usar um sensor de distância ultrassonico, porém tivemos problemas quanto a communicação com a Dragonboard, que poderia ser resolvido com mais calma. Se tiver tempo, zamów jako bibliotecas já nie przedstawia zestawu desenvolvimento, elas possuem diversos exemplos para cada tipo de sensor.

Brak strony Deweloperzy Qualcomm istnieli foruns i tutoriale que podem ajudar, e inda ma os tutoriais da 96Boards no you tube.

Zalecana: