Turinys:

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

Video: Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 žingsniai

Video: Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 žingsniai
Video: 🌟 ENG SUB | Versatile Mage | Full Version EP37-48 | Yuewen Animation 2024, Birželis
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“

APRAŠYMAS

O intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes belt como casas oru shopping centres e aeroportos.

A locomoção em ambientes já mapeados pode ou não ser apsvarstė šią problemą bem resolvido. „App Store“programa, skirta „App Store“, taip pat „que sirva apenas“, skirta 3 aplinkos ir apenijų EUA, „LowViz“vadovui. Além do limitado número de locais, tal aplicativo não detecta possíveis obstáculos and pessoas que possam estar no caminho do usuário. Assim, misão deste projeto é, através de visão computacional e processamento de imagem, identifikacinis potencialas obstáculos que possam chirurgija ao longo do caminho do usuário e poder recalcular o caminho a ser seguido dando independentência e empoderando o usuário. Na, tai yra, projektas, embora yra neužbaigta, suderinama su integruota aplikavimo sistema, skirta submeteriui arba plano 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 permite o usuário definir para onde quer ir e dá comandos de voz para movimentação. A camera, 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“.

„Neste“naudoja „Dragonboard 410c“, tvirtą techninę įrangą, skirtą faziniam pajėgumui ar procesų įvaizdžiui realiu laiku (sem ter de Competir com outras aplicações como seria no celular) ir ao mesmo tempo seja de baixo custo.

1 žingsnis: bendravimas

Materiais
Materiais

Para este projeto vamos utilizar:

- „uma placa Qualcomm Dragonboard 410c“;

- OpenCV vaizdo biblioteka de processamento de imagem (3.1 versija);

- „câmera que se comunique com a placa“(naudokite verdiktą, naudodamiesi „Android“programa arba „IP Webcan“);

- „Celular“„Android“programa arba programa;

2 žingsnis: „Instalando OpenCV Na Dragonboard“

„Instalando OpenCV Na Dragonboard“
„Instalando OpenCV Na Dragonboard“

Kompiuteryje „Linux“įdiegta vietinė platforma, taip pat galima atlikti procedūrinius veiksmus, kad būtų galima įdiegti biblioteka ir procesų apdorojimo atvaizdas - „OpenCV“- be įrenginio. Siga kaip instrukcijos nuoroda:

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

3 žingsnis: surinkite „Câmera Com“ir „Dragonboard“

„Conectar“ir „Camera Com“drakono lenta
„Conectar“ir „Camera Com“drakono lenta

Iš anksto suplanuotas „Dragonboard 410c. Existem vários jeitos de fazer isso. A dragonboard possui entrada para flatcables, ou seja, é compatível com as cameras usadas comumente em placas como a Raspberry pi.

Neste projeto, optomas usar como camera um Moto G 3 ª Geração com or applicativo IP Webcam (skirtas „Google Play“), jei norite, kad vaizdas būtų perduotas.

Abaixo um programa que faz aquisição simples da imagem usando a biblioteca opencv. O link passado como parâmetro no construtor do objeto VideoCapture é o IP do celular (indicado no aplicativo) + “/videofeed”. Na imagem acima, você encontra onde está o IP do 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. Jei norite, kad jūsų drakono lenta būtų „Collamera“, ji turėtų būti lygi „colocar como parâmetro o valor zero“(„0“).

4 žingsnis: Išskirkite programinę įrangą „De Processamento De Imagens Que Toma Decisões“

Image
Image
Procesų kūrimo programinės įrangos kūrėjas, skirtas „Toma Decisões“
Procesų kūrimo programinės įrangos kūrėjas, skirtas „Toma Decisões“
Išskleiskite programinę įrangą, skirtą procesams, skirtiems įsivaizduoti Que Toma Decisões
Išskleiskite programinę įrangą, skirtą procesams, skirtiems įsivaizduoti Que Toma Decisões

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

Paaiškinimas: A Idia de identifação de obstáculo vem da determinação dos contornos daugiau drásticos nas imagens do vídeo, ou seja, o código identifika mudanças drásticas de cores na imagem e conclui que isso seja um contorno e portanto um objte labiausiai (como nas žingsnis). Estando a câmera na barriga do usuário, levemente inclinada para o chão, conforme o usuário se locomove, o programa identifika a egzistavimas de um objeto (seja uma pessoa ou uma cadeira por example) e manda o sinal de parada caso o objeto seja encontrado na região especificada (caminho do usuário) (video image do do contorno da cadeira - caso o usuário se aproxime da cadeira haverá pixels 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 simpleificada, é requiredário um chão razoavelmente homogêneo, de forma que os detailshes do chão não sejam tekintant 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.

Funkcija: o identifadorDeObstáculos.cpp gauna vaizdo įrašą, kuriame yra „Wi -Fi“ryšys su „sparkfun que deve“serumo vaizdo įrašu. O código manda condições de parada á um aplicativo de um outro celular que usuário está usando. Idealus manda-se comandos de voz de parada parada o usuário.

Pastaba: Altere o código de acordo para especificar de onde os vídeos são recebidos and para quality android as informationções são encaminhadas. Os tipos de alterações são especificadas no próprio código (assim como nos programs de teste) comentados no início do program.

Para saber mais sobre bordas de Canny e limiarização, além de outros tópicos de visão computacional, rekomenduojame įsigyti ir oficialiai paskelbti OpenCV dokumentus.

5 veiksmas: „Fazer Aplicativo Que Repassa“kaip informacijos trūkumas

Para reprzir este projeto é requiredário criar um banco de dados no site data.sparkfun.com, o processo ir muito intuitivo de forma que não será dada uma explicação more detailhada aqui, mas colocaremos o link do banco que criamos para referência ().

Prisiminkite „Dragonboard“reconhece que há um obstáculo a sua frente ela posta em um banco de dados buildido no data.sparkfun.com essa informationção. O aplicativo faz uma consulta a este banco com o auxílio da classe okhttp3 obtendo as information as como um Json. Então fazemos um parser desse json para encontrarmos o último 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 arba aplicativo emite um sinal para prosseguir continamente.

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

„GetJson“: naudokitės fazer um get no banco de dados do data.sparkfun retornando um arquivo em formato json para a aplicação.

„JsonDownloader“: „GeJos“yra „Asynctask para de fato utilizarmos“ir „GetJson“klasė, importo ir naudojimo instrukcijos, skirtos „travarmos“sąsajai ir naudojimui.

MainActivity: nesta classe implementamos a lógica da aplicação que continamente consults o banco de dados, e information or usuário por meio de um audio se ele precisa para ou pode continar caminhando.

„RequestListener“: „uma“sąsaja, naudojama pagrindiniam ar pagrindiniam veikimui.

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 pasta raw dentro da pasta res e incluir os arquivos de audio lá. Feito isso dentro do método initSoundHash () você deve colocar esses arquivos dentro de mSoundHash que é uma tabela Hash. Para usar este áudio basta usar o método playSound (int key) ir passar como parâmetro a chave escolhida para o sinal de voz.

Įspėjimai: essa classe é utilizada para fasitaritar o parser do json retornado pelo banco de dados.

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

Išdėstykite aplicação sudėtis de um único botão que funcionava com o método Baigti įgyvendinti „MainActivity“, nesvarbu, kaip supaprastinti darbą ir pritaikyti, ar pasikonsultuoti.

„Qualquer dúvida adicional“arba „sugestão basta entrar“yra autoriaus autorius. Sugestões são 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.

6 žingsnis: Sugestões De Continuação

Poderiamos integrar um system de localaização. Yra „Qualcomm iZat SDK“, turintis vietinės sistemos GNSS, acelerômetro, magnetrômetro entre outros, ja embutidos no processor Qualcomm Snapdragon (presente na maioria dos celulares) sistemą. No entanto, havia pouca documentação e requireditava de testes de demes.

Também gostariamos de usar um sensor de distância ultrassonico, porém tivemos problems quanto a comunicação com a Dragonboard, que poderia ser resolvido com mais calma. Jei norite matyti tempą, įsigykite kaip bibliotecas já presentes no kit de desenvolvimento, elas possuem diversos exemplos para cada tipo de sensor.

Nėra svetainės Kūrėjai „Qualcomm“egzistuoja mokymai ir mokytojų vadovai, dirbantys pagal ajudar, e ainda há tutoriais da 96Boards no you tube.

Rekomenduojamas: