Convertir Mat a Bitmap Opencv para Android
Estoy tratando de encubrir un MAt a un uso Bitmap código siguiente:
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Mat tmp = new Mat (width,height,CvType.CV_8UC1,new Scalar(4)); try { //Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_RGB2BGRA); Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_GRAY2RGBA, 4); Utils.matToBitmap(tmp, bmp);} catch (CvException e){Log.d("Exception",e.getMessage());}
My seedsImage es un objeto Mat. Y la Excepción y se obtiene 10-09 22:15:09.418: D/Exception(2461): ..\..\modules\java\generator\src\cpp\utils.cpp:105: error: (-215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, _jclass*, jlong, _jobject*, jboolean)
Para buscar a través pero ninguna solución funcionó para mí. ¿Alguien puede ayudar?
- ¿Cómo encontrar los contornos de un marco de una cámara Android y convertirlos en cuerpos box2d?
- ¿Cómo obtener el nivel de Compensación de exposición de la cámara del teléfono Android, a través de Java, cuando se toma la foto?
- Android JavaCV dilema, NoClassDefFoundError lanzado dentro del método 'dibujar' cuando se crea IplImage
- Detección de características faciales con OpenCV Android
- construye fuentes openCV nativas con Android Studio y NDK
- SURF Feature Extraction con Android OpenCV SDK - Obtener algunos errores
- Ejecución de la aplicación Android + Opencv + NDK en un dispositivo real
- Incluir OpenCV en el paquete de aplicaciones de Android
- Aplicación de Android que utiliza tecnología de reconocimiento de imagen
- OpenCV para Android: ejemplo simple para convertir la imagen a escala de grises
- La aplicación se estrelló después de la señal fatal 11 (SIGSEGV) en 0x00000020 (código = 1) - Android
- Native OpenCV Samples para Android lanza UnsatisfiedLinkError
- Falló la aserción de OpenCV nMatToBitmap
1) El constructor de OpenCV Mat espera <rows, cols>
lugar de <width, height>
como sus argumentos. Así que tienes que cambiar tu segunda línea a
Mat tmp = new Mat (height, width, CvType.CV_8U, new Scalar(4));
2) Imgproc.cvtColor
puede cambiar las dimensiones del objeto tmp
. Por lo tanto, es seguro crear un mapa de bits después de la conversión de color:
Bitmap bmp = null; Mat tmp = new Mat (height, width, CvType.CV_8U, new Scalar(4)); try { //Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_RGB2BGRA); Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_GRAY2RGBA, 4); bmp = Bitmap.createBitmap(tmp.cols(), tmp.rows(), Bitmap.Config.ARGB_8888); Utils.matToBitmap(tmp, bmp); } catch (CvException e){Log.d("Exception",e.getMessage());}
Pruebe este código para la conversión de mat a bitmap
**Mat mRgba; public void onCameraViewStarted(int width, int height) { mRgba = new Mat(height, width, CvType.CV_8UC4); } public Mat onCameraFrame(Mat inputFrame) { inputFrame.copyTo(mRgba); return mRgba; } private void captureBitmap(){ bitmap = Bitmap.createBitmap(mOpenCvCameraView.getWidth()/4,mOpenCvCameraView.getHeight()/4, Bitmap.Config.ARGB_8888); try { bitmap = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888); Utils.matToBitmap(mRgba, bitmap); mBitmap.setImageBitmap(bitmap); mBitmap.invalidate(); }catch(Exception ex){ System.out.println(ex.getMessage()); } }**
- ¿Cómo comprobar si el recurso apuntado por Uri está disponible?
- ¿Hay alguna forma de obtener información de la GPU?