cvCanny y flotante de 32 bits (IPL_DEPTH_32F) problema
-
22-09-2019 - |
Pregunta
Tengo algunos problemas con OpenCVs cvCanny(...) y la Imagen de los tipos de datos que puede manejar.Bien, tal vez los chicos/chicas saben una solución.
Yo tengo una de 32 bits en coma flotante de la imagen y quiero realizar cvCanny en él.El problema es cvCanny sólo puede manejar "IPL_DEPTH_8S" o U (signed / unsigned short), o al menos eso es lo que sospecho.El OpenCV manual no indica cuánto se puede manejar y esta línea en cv/cvcanny.cpp no levantar mis esperanzas:
...
if( CV_MAT_TYPE( src->type ) != CV_8UC1 ||
CV_MAT_TYPE( dst->type ) != CV_8UC1 )
CV_ERROR( CV_StsUnsupportedFormat, "" );
...
Las imágenes que tengo son en escala de grises / solo canal float32 poco y los valores en la imagen son de entre 0.0 y 16.0.El Casting de mi float32 a unsigned short no ayuda mucho ya que los valores perdería su precisión y yo los echo de menos los bordes con OpenCVs astuto.
¿Chicos/chicas pasar a conocer una solución para mi problema?(además de utilizar ITK :) )
Solución
En este momento, ya que cvCanny
sólo es compatible con un solo canal de imágenes de 8 bits, lo único que ocurre es que la escala de un valor en su imagen por 255/16
en una nueva imagen de tipo CV_8UC1
para que oscila entre 0 - 255
para minimizar el precisión que has perdido.