Título: OpenCv + Android + Problemas con Matrices Publicado por: Mr.Moonlight en 6 Abril 2022, 01:25 am Buenas foreros! :D
Como habréis podido leer en el título este es un asunto relacionado con programación en Java para una app Android usando la librería openCV. En resumidas cuentas el programa carga una red neuronal que ya hemos entrenado con una batería de imágenes. El programa original, por comodidad y por poca experiencia lo codificamos en Java pensando que como Android y Java van bastante de la mano no habría una dificultad grande a la hora de traducirlo para una app, bien el problema parte a la hora de proporcionarle la entrada a la red neuronal. Código
Testeando y probando he llegado a la conclusión que a pesar de que la función BlobFromImage solicita una Matriz como primer parametro esta debe de estar construida de una forma un poco más especial, si yo trato de enviar una Matriz como fgMask en vez de una BufferedImage lanzará un error: Contenido de fgMask: Mat [ 1*1*250*250*CV_32FC1, isCont=true, isSubmat=false, nativeObj=0x1fb55df0, dataAddr=0x23991140 ] Contenido de fgMask(BufferedImage): Mat [ 1*3*250*250*CV_32FC1, isCont=true, isSubmat=false, nativeObj=0x1f59f110, dataAddr=0x21d63c00 ] Código del Error: Código: [ERROR:0] global C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\dnn\src\dnn.cpp (3512) cv::dnn::dnn4_v20210608::Net::Impl::getLayerShapesRecursively OPENCV/DNN: [Convolution]:(sequential/conv2d/Conv2D): getMemoryShapes() throws exception. inputs=1 outputs=0/1 blobs=2 ¿Alguien sabe como cambiar o qué significa el segundo digito en la información de las matrices que he puesto arriba? No sé pero siento que de modificar ese caracter sin recurrir a la chapuza de BufferedImage se podría solucionar todo fácilmente. Título: Re: OpenCv + Android + Problemas con Matrices Publicado por: kub0x en 6 Abril 2022, 03:28 am Hola,
estás obteniendo el error Number of input channels should be multiple of 3 but got 1 in function. Revisa la parametrización ya que el nº de canales ha de ser múltiplo de 3 y tu le pastaste 1, no sé si eso te dice algo.. Saludos. Título: Re: OpenCv + Android + Problemas con Matrices Publicado por: Mr.Moonlight en 6 Abril 2022, 16:05 pm Hola, estás obteniendo el error Number of input channels should be multiple of 3 but got 1 in function. Revisa la parametrización ya que el nº de canales ha de ser múltiplo de 3 y tu le pastaste 1, no sé si eso te dice algo.. Saludos. Muchas gracias por tu respuesta kub0x!, más exactamente tenía que ser 3, el problema era que al realizar las operaciones para eliminar el fondo de la imagen, etc, la matriz del color había quedado como un solo dígito por posición, en vez de un escalar estilo RGB que sería un vector con 3 dígitos! Hemos conseguido encontrar una corrección y aparentemente todo funcionará perfectamente en Android. ;D Por si a alguien le interesa la corrección que hemos encontrado es usando Código Donde el último parámetro de la función cvtColor indica el numero de canales para expresar el color, no alterara absolutamente nada puesto que la única diferencia es que el blanco y negro en vez de ser expresados por 0 o 1 será expresado como RGB ;-) ;-) |