Generando código desde GRIP
Generación de código con GRIP
Cuando ejecute su algoritmo de visión en un procesador pequeño como un roboRIO o Raspberry PI se recomienda ejecutar OpenCV directamente en el procesador sin la sobrecarga de GRIP. Para facilitar esto, GRIP puede generar código en C ++, Java y Python para la pipeline que usted cree. Este código generado se puede agregar a su proyecto de robot y ser llamado directamente desde su código de robot existente.
Fuentes de entrada como cámaras o directorios de imágenes y pasos de salida como NetworkTables no son generados. Su código debe proporcionar imágenes como matrices de OpenCV. En el roboRIO, la clase CameraServer proporciona imágenes en ese formato. Para obtener resultados, solo puede usar métodos getter generados para recuperar los valores resultantes, como los valores x e y de un contorno.
Generando el código
Para generar código, vaya a Tools > Generate Code
. Aparecerá un cuadro de diálogo para guardar que le permite crear una clase C++, Java o Python que realiza los pasos de la pipeline GRIP.
Si genera código para ser usado en un proyecto preexistente, elija un directorio relevante para guardar la pipeline.
Usuarios de C++: la clase de la pipeline se divide en un encabezado y un archivo para ser implementado
Java Users: la clase generada carece de una declaración de paquete, por lo que una declaración debe ser agregada para que coincida con el directorio donde se guardó el archivo.
Usuarios de Python: el nombre del módulo será idéntico a la clase, así que la declaración de importación será algo así como
from Pipeline import Pipeline
Estructura del código generado
Pipeline:
// Process -- this will run the pipeline
process(Mat source)
// Output accessors
getFooOutput()
getBar0Output()
getBar1Output()
...
Ejecutando la pipeline
Para ejecutar la Pipeline, llame al método de proceso con las fuentes (cámaras web, cámaras IP, archivos de imagen, etc.) como argumentos. Esto mostrará los resultados de cada operación en la pipeline con los métodos getFooOutput
.
Obteniendo los resultados
Los usuarios pueden obtener los resultados de cada paso en la pipeline. Los resultados de estas operaciones serían accesibles a través de sus respectivos accesos. Por ejemplo:
Operación |
getter en Java/C++ |
variable de Python |
---|---|---|
Umbral del RGB |
|
|
Difuminación |
|
|
Erosión CV |
|
|
Encontrar contornos |
|
|
Filtrar contornos |
|
|
Si una operación aparece varias veces en la pipeline, los accesores para esas operaciones tienen el numero de esa operación:
Operación |
Aparición |
Accesor |
---|---|---|
Difuminación |
Primera |
|
Difuminación |
Segunda |
|
Difuminación |
Tercera |
|