Cómo aprovechar al máximo OpenCV y HLS en Vivado
Este artículo presenta los tipos de imágenes y los métodos de procesamiento de funciones en OpenCV, describe varios pasos básicos para llamar a funciones de la biblioteca OpenCV en vivadoHLS para implementar el procesamiento de imágenes a través de ejemplos de diseño y completa la conversión integral del diseño OpenCV a RTL. proceso de desarrollo.
Open Source Computer Vision (OpenCV) se usa ampliamente para desarrollar aplicaciones de visión por computadora. Contiene una biblioteca de más de 2500 funciones de video optimizadas y está optimizado específicamente para procesadores de escritorio y GPU. OpenCV tiene miles de usuarios y el diseño de OpenCV puede ejecutarse en el procesador ARM de los dispositivos Zynq sin modificaciones. Sin embargo, el procesamiento de alta definición que utiliza OpenCV a menudo está limitado por la memoria externa. En particular, el ancho de banda del almacenamiento se convertirá en un cuello de botella en el rendimiento y el acceso al almacenamiento también limitará la eficiencia del consumo de energía. Con la herramienta de síntesis de lenguaje de alto nivel VivadoHLS, puede convertir fácilmente el diseño de procesamiento de video OpenCV C++ a código RTL, acelerador de hardware de salida o implementar directamente funciones de procesamiento de video en tiempo real en FPGA. Al mismo tiempo, el SOC totalmente programable Zynq es una excelente manera de implementar aplicaciones de visión por computadora integradas, que resuelve bien las limitaciones del bajo consumo de energía y el bajo consumo de energía para lograr el rendimiento del procesamiento de video en un solo procesador Zynq. y núcleo ARM integrado, es una solución integrada de energía optimizada.
1 La relación entre los tipos de imagen IplImage, CvMat y Mat en OpenCV y la introducción del tipo de imagen hls::Mat en VivadoHLS
Los contenedores de datos comunes relacionados con las operaciones de imágenes en OpenCv se incluyen Mat. cvMat e IplImage. Estos tres tipos pueden representar y mostrar imágenes. Sin embargo, el tipo Mat se centra en el cálculo y OpenCV también ha optimizado el cálculo del tipo Mat. Los tipos CvMat e IplImage se centran más en "imágenes" y opencv optimiza las operaciones de la imagen (zoom, extracción de un solo canal, operaciones de umbral de imagen, etc.). Antes de opencv2.0, opencv se implementaba completamente en C. Sin embargo, la relación entre el tipo IplImage y el tipo CvMat es similar a la relación de herencia en la orientación a objetos. De hecho, hay una clase base más abstracta además de CvMat, CvArr, que es común en el código fuente.
1.1 Tipo de tapete en OpenCV: tipo de matriz (Matrix).