תוכן עניינים:

Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E אפליקציית אנדרואיד: 6 שלבים
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E אפליקציית אנדרואיד: 6 שלבים

וִידֵאוֹ: Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E אפליקציית אנדרואיד: 6 שלבים

וִידֵאוֹ: Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E אפליקציית אנדרואיד: 6 שלבים
וִידֵאוֹ: 🌟 ENG SUB | Versatile Mage | Full Version EP37-48 | Yuewen Animation 2024, יוני
Anonim
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E אפליקציית אנדרואיד
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E אפליקציית אנדרואיד

DESCRIÇÃO

O into do projeto é dar autonomia para deficientes visuais se lokomoverem em ambientes como caso casas ou מרכזים מסחריים e aeroportos.

A locomoção em ambientes yes mapeados pode ou não ser considerado um problema bem resolvido. אפשר גם להעביר את חנות האפליקציות לחנות האפליקציות גם לאתר, אבל גם למרכיבים של 3 נושאים EUA ולמדריך LowViz. 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 dando independent and e empoderando o usuário. Na prática, o projeto, embora ainda incompleto, consiste em integrar um aplicativo de onde se pode submeter ou desenhar uma planta baixa do local de interest, 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 câmera, quando detecta um obstáculo a frente, pode recalcular o caminho do usuário. Como dizia יו הר: "Nenhum indivíduo é incapaz, o que existe é falta de desenvolvimento tecnológico para capacitar e nos tornar iguais".

Neste projeto usaremos a Dragonboard 410c, porque precisamos de um hardware que tenha capacidade de fazer or processamento de imagens em tempo real (sem ter de competir com outras aplicações como seria no celular) e ao mesmo tempo seja de baixo custo.

שלב 1: Materiais

Materiais
Materiais

על מנת להשתמש באפשרויות הבאות:

- uma placa Qualcomm Dragonboard 410c;

- biblioteca de processamento de imagem OpenCV (גרסה 3.1);

- câmera que se comunique com a placa (שימוש במערכת אנדרואיד סלולרית או אפליקציית IP Webcan);

- מערכת סלולר אנדרואיד עבור אפליקציה;

שלב 2: התקנת OpenCV Na Dragonboard

Instalando OpenCV Na Dragonboard
Instalando OpenCV Na Dragonboard

עם התקנת לינוקס של לינוקס, הפרוצדורות וההליכים שלנו יכולים להתקין תוכנת התהליכים המקובלים - OpenCV - ללא מכשיר. קישור לפי הוראות הקישור:

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

שלב 3: Conectar a Câmera Com a Dragonboard

קונקטאר קאמרה קום דרגוןבורד
קונקטאר קאמרה קום דרגוןבורד

Precisamos conectar a câmera que serão os olhos do deficiente com a placa de desenvolvimento Dragonboard 410c. Existem vários jeitos de fazer isso. A dragonboard possui entrada para flatables, ou seja, é compatível com as câmeras usadas comumente em placas como a Raspberry pi.

אנחנו יכולים להשתמש במכשיר G3 Geração עם אפליקציית מצלמת רשת IP (ניתן להפעיל ב- Google Play).

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”. אנו יכולים לדמיין את זה, או לאפשר לי להשתמש במערכת IP.

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 parâmetro o valor zero ("0"), que significa que você quer procurar a câmera default.

שלב 4: תוכנת Desenvolver De Processamento De Imagens Que Toma Decisões

Image
Image
תוכנת Desenvolver De Processamento De Imagens Que Toma Decisões
תוכנת Desenvolver De Processamento De Imagens Que Toma Decisões
תוכנת Desenvolver De Processamento De Imagens Que Toma Decisões
תוכנת Desenvolver De Processamento De Imagens Que Toma Decisões

תוכניות אלה ניתנות לאתר, לזיהוי DeObstáculos.cpp, o MostraContornoWebcam.cpp e o VídeoCadeiraSlavo.cpp (estes dois últimos para teste e entendimento da técnica do software).

הסבר: אידיאציה של זיהוי של מכשולים של דטרמינאוסו דוס קונטורנוס אפשר להבחין בווידיאו, או להבחין, או להבחין בזיהוי מודעים של ליבות עם דמיון וסיכום שהינו אי אפשר להבחין ביותר שלב). Estando a câmera na barriga do usuário, levemente inclinada para o chão, conforme o usuário se locomove, o programa identifiera a existência de um objeto (seja uma pessoa ou uma cadeira for example) e manda o sinal de parada caso o objeto seja encontr região especificada (caminho do usuário) (vide imagem 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 simplificada, é necessário um chão razoavelmente homogêneo, de forma que os detalhes do chão não sejam considerados 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.

פונקציה: o identificadorDeObstáculos.cpp recebe on vídeo da rede wifi atraves do sparkfun que deve ser um vídeo 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.

שימו לב: Altere o código de acordo para especificar de onde os vídeos 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, além de outros tópicos de visão computacional, recomenda-se procurar a documentação officially da OpenCV.

שלב 5: Fazer Aplicativo Que Repassa כמידע על ויזואלי ליקוי

Para reproduzir este projeto é necessário criar um banco de dados אין אתר data.sparkfun.com, או processo é muito intuitivo de forma que não será dada uma explicação mais detalhada aqui, mas colocaremos או קישור do banco que criamos para referência ().

Assim que a Dragonboard reconhece que há um obstáculo a sua frente ela posta em um banco de dados construido no data.sparkfun.com essa informação. O aplicativo faz uma consulta a este banco com o auxílio da classe okhttp3 obtendo as informações 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 o aplicativo emite um sinal para prosseguir continuamente.

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

GetJson: אני יכול להשתמש ב fazer אם אין לך אפשרות לעשות data.sparkfun retornando um arquivo em formato json para aplicação.

JsonDownloader: אחד או יותר של גרסאות אסינקטסקה על מנת להשתמש ב- Classe GetJson, מה שהופך אותנו לחלק מהמשתמשים והמשתמשים בממשק.

פעילות עיקרית: nesta class implementamos a lógica da aplicação que continuamente consulta o banco de dados, e information of usuário por meio de um audio se ele precisa para ou pode continuar caminhando.

RequestListener: ממשק משתמש אחד עבור MainCctivity Teracterassticas.

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) e passar como parâmetro a chave escolhida para o sinal de voz.

אזהרות: essa classe é utilizada para facilitar or parser do json retornado pelo banco de dados.

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

O layout da aplicação consistia de um único botão que funcionava com o método צא מהיישום ב- MainActivity, este método simplesmente forçava a aplicação parar a consulta no banco de dados.

Qualquer dúvida adicional ou sugestão basta entrar em contato com o author. 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: Sugestões De Continuação

Poderiamos integrar um systemema de localaização. קיימים יכולות של Qualcomm iZat SDK במערכת המקומית GNSS, acelerômetro, magnetrômetro entre outros, כן embutidos no processprio processor Qualcomm Snapdragon (מציג היום מספר דגמים סלולריים). 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 problemsas quanto a comunicação com a Dragonboard, que poderia ser resolvido com mais calma. קצב שונה, לרכוש כמו bibliotecas כן מציג אין kit de desenvolvimento, elas possuem diversos exemplos para cada tipo de sensor.

אין מפתחי אתרים Qualcomm existem fóruns e tutoriais que podem ajudar, e ainda há os tutoriais da 96Boards no you tube.

מוּמלָץ: