Usando o AI Vision Sensor no VEXcode EXP C++

Este artigo fornece uma visão geral das funções disponíveis para usar o AI Vision Sensor em Python, junto com instruções simples sobre como usá-las. Você aprenderá as quatro etapas do processo de uso do AI Vision Sensor – obter dados, ver a quantidade de objetos obtidos, selecionar qual objeto dos dados usar e quais dados do objeto extrair.

Obtenha dados visuais com o AI Vision Sensor

Para coletar informações do ambiente ao seu redor, o AI Vision Sensor tira uma imagem do que está olhando no momento. Quaisquer objetos que ele identifique com a Assinatura Visual especificada são armazenados internamente no AI Vision Sensor, que pode então ser usado por outras funções.

.tire uma foto rápida

Qualquer Assinatura Visual precisará ser configurada antes de poder ser usada como parâmetro. Ao usar este método, especifique o parâmetro de assinatura como o nome do sensor, sublinhado duplo, seguido do nome da Assinatura Visual.

utilitário exm.PNG

AIVision6.takeSnapshot(AIVision6__Blue)
AIVision6.takeSnapshot(AIVision6__Red)
AIVision6.takeSnapshot(AIVision6__Green)

Exemplo

Neste exemplo, o método .takeSnapshot é empregado para procurar quaisquer objetos correspondentes à Assinatura Visual "Azul" . Em seguida, o código exibirá a contagem de objetos encontrados para aquela Assinatura Visual .

int main() {
while (true) {
// Tira um instantâneo para verificar objetos detectados
AIVision6.takeSnapshot(Blue);

// Limpa a tela/reset para que possamos exibir novas informações
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Imprime quantos objetos foram detectados
Brain.Screen.print("object count: %d", AIVision6.objectCount);

esperar(0,5, segundos);
}
}

Determine quantos objetos foram detectados

Como o método .takeSnapshot pode detectar vários objetos com a mesma Assinatura Visual por vez, você pode descobrir quantos objetos foram detectados com a propriedade .objectCount.

Brain.Screen.Print(“%d”, AIVision1.objectCount)

Exemplo

Neste exemplo, a propriedade .objectCount está sendo usada para verificar se pelo menos 1 Visual Signature foi detectada no último instantâneo e, em seguida, imprimindo verdadeiro ou falso se um objeto foi detectado. Se um objeto foi detectado, ele imprime a contagem de quantos objetos foram detectados no total.

int main() {
while (true) {
// Tira um instantâneo para verificar objetos detectados
AIVision6.takeSnapshot(Blue);

// Limpa a tela/reset para que possamos exibir novas informações
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// se objetos foram encontrados, imprime quantos
if (AIVision6.objectCount > 0) {
Brain.Screen.newLine();
Brain.Screen.print("contagem de objetos: %d", AIVision6.objectCount);
}

wait(0,5, segundos);
}
}

Selecione de qual objeto obter dados

Existem dois métodos para extrair dados do AI Vision Sensor. Uma abordagem é recuperar diretamente informações do maior objeto detectado no uso mais recente do método .takeSnapshot usando a propriedade AIVision.largestObject. O outro método usa a propriedade AIVision.objects[] e especifica um índice de objeto.

AIVision.largestObject

ai.vision.largest_object() é uma propriedade para acessar o maior objeto.

int main() {
while (true) {
// Tira um instantâneo para verificar objetos detectados
AIVision6.takeSnapshot(BlueBox);

// Limpa a tela/reset para que possamos exibir novas informações
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Se objetos foram encontrados, imprime a localização
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.largestObject[0].centerX);
} else {
Brain.Screen.print("nenhum objeto");
}

wait(0,5, segundos);
}
}

AIVision.objects

Outro método para extrair dados é especificar o índice do objeto do qual você deseja extrair dados. O instantâneo retorna os objetos detectados com o maior objeto primeiro no índice 0 e ordena os objetos do maior para o menor.

int main() {
while (true) {
// Tira um instantâneo para verificar objetos detectados
AIVision6.takeSnapshot(BlueBox);

// Limpa a tela/reset para que possamos exibir novas informações
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Se objetos foram encontrados, imprime a localização
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("nenhum objeto");
}

wait(0,5, segundos);
}
}

Selecione quais dados extrair de um objeto

De cada objeto, existem oito propriedades que podem ser chamadas.

  • .altura
  • .largura
  • .centerX
  • .centerY
  • .originX
  • .originY
  • .ângulo
  • .existe

.altura

A propriedade .height retorna a altura do objeto detectado em pixels.

Use este código para retornar a propriedade .height:

AIVision6.objects[0].altura

A propriedade .height retornará um valor entre 0 e 240 pixels.

.largura

A propriedade .width retorna a largura do objeto detectado em pixels.

Use este código para retornar a propriedade .width:

AIVision6.objects[0].largura

A propriedade retornará um valor entre 0 e 320.

.centerX

A propriedade .centerX informa a coordenada X do centro da Assinatura Visualdetectada.

Use este código para retornar a propriedade .centerX:

AIVision6.objects[0].centerX

A propriedade .centerX retornará um número entre 0 e 320.

.centerY

A propriedade .centerY informa a coordenada Y do centro da Assinatura Visualdetectada.

Use este código para retornar a propriedade .centerY:

AIVision6.objects[0].centerY

A propriedade .centerY retornará um número entre 0 e 240.

.originX

A propriedade .originX informa a coordenada X do canto superior esquerdo da Assinatura Visual detectada.

Use este código para retornar a propriedade .originX:

AIVision6.objects[0].originX

A propriedade .originXretornará um número entre 0 e 320.

.originY

A propriedade .originY informa a coordenada Y do canto superior esquerdo da Assinatura Visual detectada.

Use este código para retornar a propriedade .originY:

AIVision6.objects[0].originY

A propriedade .originYretornará um número entre 0 e 240.

.ângulo

A propriedade .angle retorna o valor do ângulo do Código de Cores.

Use este código para retornar a propriedade .angle:

AIVision6.objects[0].ângulo

A propriedade .angle retorna a orientação do código de cores detectado, variando de 0 a 359,99 graus.

.existe

.exists é uma propriedade booleana que retorna verdadeiro se for um objeto válido. 

Ele retornará falso se o objeto for inválido, como se um número inteiro negativo for usado. Se um objeto for inválido, todas as outras propriedades retornarão 0s como valor.

int main() {
while (true) {
// Tira um instantâneo para verificar objetos detectados
AIVision6.takeSnapshot(BlueBox);

// Limpa a tela/reset para que possamos exibir novas informações
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Se objetos foram encontrados, imprime a localização
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("nenhum objeto");
}

wait(0,5, segundos);
}
}

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: