Transformación de distancia en error de salida OpenCV

Estoy usando binarios de Android y esta es la primera vez que realizo una transformación de distancia en OpenCV. Él Especificación OpenCV dice que la imagen de salida de distanceTransform es una imagen de un solo canal de coma flotante de 32 bits. Obtuve esto en un tapete (mDist), pero al crear un mapa de bits a partir del tapete, arroja una IllegalStateException. ¿Se debe esto a la incompatibilidad de la salida y el objeto mat? ¿Tengo que especificar los detalles del canal de color para el tapete o algo? La siguiente es mi parte del código.

enter image description here

        Mat mImg = new Mat();
        Mat mThresh = new Mat();
        Mat mDist = new Mat();

        ImageView imgView = (ImageView) findViewById(R.id.imageView);
        Bitmap bmpIn = BitmapFactory.decodeResource(getResources(),
                R.drawable.w1);    
        Utils.bitmapToMat(bmpIn, mImg); //Load image to mat

        Imgproc.cvtColor(mImg, mImg, Imgproc.COLOR_BGR2GRAY);    
        Imgproc.threshold(mImg, mThresh, 0, 255, Imgproc.THRESH_BINARY
                | Imgproc.THRESH_OTSU); //Grayscale and thresholding        

        Imgproc.distanceTransform(mThresh, mDist, Imgproc.CV_DIST_L2, Imgproc.CV_DIST_MASK_PRECISE);

        Bitmap bmpOut = Bitmap.createBitmap(mDist.cols(), mDist.rows(),
                Bitmap.Config.ARGB_8888);   

        Utils.matToBitmap(mDist, bmpOut); //Error in creating bitmap
        imgView.setImageBitmap(bmpOut);

preguntado el 02 de julio de 12 a las 19:07

1 Respuestas

La falla estaba en la siguiente línea de código;

Bitmap bmpOut = Bitmap.createBitmap(mDist.cols(), mDist.rows(),
                Bitmap.Config.ARGB_8888); 

El Bitmap.Config que debería aplicarse no era ARGB_8888. La función crea un tapete de un solo canal de 8 bits.

Respondido 11 Feb 13, 12:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.