Red de conocimiento informático - Material del sitio web - Cómo utilizar VC para obtener información de píxeles en Halcon

Cómo utilizar VC para obtener información de píxeles en Halcon

El procesamiento de imágenes en el entorno VC es más rápido que el desarrollo de operaciones en MATLAB, pero la carga de trabajo es mucho mayor. El uso de MATLAB para el procesamiento de imágenes se puede lograr llamando directamente a las funciones relevantes, lo cual es más intuitivo, pero no puede cumplir con los requisitos de mayor velocidad. Por lo tanto, el desarrollo directo en el entorno VC suele ser la primera opción. Sin embargo, dado que VC es solo un entorno de desarrollo, las funciones utilizadas directamente para el procesamiento de imágenes deben ser escritas y agregadas por usted mismo, por lo que a menudo lleva más tiempo. Con el desarrollo de diversos programas de visión artificial, se han producido varios paquetes de software de visión artificial. HALCON es un software de visión artificial relativamente potente con funciones integrales. Es más fácil de desarrollar en el entorno HDevelop y más rápido de ejecutar. Además, HALCON también se puede integrar en otros entornos de desarrollo, lo que ahorra tiempo de desarrollo subyacente y el uso directo y eficaz de su biblioteca de funciones puede producir buenos resultados. Este artículo combina mi propia experiencia para presentar brevemente cómo utilizar la biblioteca HALCON en un entorno VC.

El procesamiento de imágenes en el entorno VC a menudo requiere que usted escriba sus propias clases de procesamiento de imágenes. Ahora hay algunas clases escritas por personas mayores, como la clase CDib y la clase DIBAPI, que puede "obtener" directamente. La biblioteca HALCON es equivalente a una clase empaquetada. Después de realizar algunas configuraciones simples en VC, puede usar sus funciones. A continuación se explica cómo configurarlo en el entorno VC:

1. El primero en el proyecto -> Agregue halconcpp.lib a la página de propiedades del enlace en la configuración....; >

2 En segundo lugar, agregue el directorio $ (raíz de halcon) \include, $ (raíz de halcon) \include\CPP al preprocesador en la página de propiedades de C/C++ en Proyecto->Configuración....;

3. Luego agregue la ruta $ (halcon root)\lib\i586-nt4....;

4. Finalmente, por supuesto, no olvide agregar el encabezado de clase. archivo al programa: # # Incluyo "halconcpp. h"

La configuración anterior está configurada y todo está bien. Ahora puede llamar funciones en HDevelop en el programa, como el énfasis de la función de mejora de imagen (hImage y HRotateImage, 7, 7, 2.0), etc. Sabemos que las imágenes generalmente se usan como variables de tupla en HDevelop, por lo que las variables deben convertirse en VC, por ejemplo:

Para imágenes en escala de grises, el número de imágenes se puede convertir en una variable Hobject:

gen_image 1(& hImage, "byte", WIDTH, HEIGHT, (long)m_pImageBuffer);

Para imágenes en color, R, G y B tres componentes:

extrae RGB 24 canales (m_pimage buffer, m_pRed, m_pGreen, m_pBlue);

Luego convierte a variable Hobject:

gen_image3(& hImage, "byte", ancho, alto, (long)m_pRed, (long)m_pGreen, (long)m_pBlue);

A continuación, puede llamar a las funciones de procesamiento de imágenes, como

Mejora de imagen: énfasis (hImage, & hRotateImage, 7, 7, 2.0); //Los parámetros se pueden ajustar.

Umbral: bin_threshold (himage, & hRotateImage);

rgb1_to_gray(hImage, & amphRotateImage); //Convertir a imagen en escala de grises

La variable procesada se convierte en un búfer para visualización de imágenes: get_image_pointer 1(hrotateimage, (long *)&m_pImageBuffer, Type & width 1 & height 1);

Pero encontrará algunos problemas al llamar a las funciones de la biblioteca HALCON, como rotar_imagen ( himage, & hRotateImage, 90, "constant"); convierte la variable procesada en

get_image_pointer 3 (hRotateImage, (long *) & m_pRed, (long *) & m_pGreen, (long *) & m_pBlue, Type & width 1 & height 1);

ComposeRGB24(m_pRed, m_pGreen, m_pBlue, m_pimage buffer);

Pero se produjo un error durante la ejecución y la función get_image_pointer3 informó un error. error. ¡El valor de escala de grises indefinido en get_image_pointer 3 aún debe resolverse!