Opencv C + + crear objeto Mat de android NV21 buffer de datos de imagen

He implementado una aplicación de Android que inicia la cámara y enviar todo el búfer de vista previa a los componentes nativos utilizando la interfaz JNI. Dado que los datos de vista previa están en formato de imagen NV21, necesito crear una instancia de cv :: Mat de ella. Lo busqué y encontré la siguiente solución:

cv::Mat _yuv(height, width, CV_8UC1, (uchar *) imagebuffer); where imagebuffer is jbyte* 

Sin embargo, no obtenga la imagen esperada en la imagen de salida. Todo está lleno de algunas líneas al azar, etc ¿Alguien sabe exactamente cómo puedo hacerlo?

Necesita convertir imagen YUV en imagen RGBA.

 cv::Mat _yuv(height+height/2, width, CV_8UC1, (uchar *)imagebuffer); cv::cvtColor(_yuv, _yuv, CV_YUV2RGBA_NV21); 

Por lo general, las imágenes YUV son imágenes de 1 canal con 1.5*height (si se tratara de una imagen RGB o en escala de grises).

O puede crear un nuevo Mat y pasar jint matriz a la función nativa y utilizar esa matriz para establecer píxeles de mapa de bits.

 jint *_out = env->GetIntArrayElements(out, 0); cv::Mat _yuv(height + height/2, width, CV_8UC1, (uchar*)imagebuffer); cv::Mat _rgba(height, width, CV_8UC4, (uchar *)_out); cv::cvtColor(_yuv, _rgba, CV_YUV2RGBA_NV21); env->ReleaseIntArrayElements(out, _out, 0); 

En Java,

 bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); pixels = new int[width * height]; native_function(height, width, bytedata, pixels); bitmap.setPixels(pixels, 0, width, 0, 0, width, height); 
  • Código de desbloqueo de la cara en el proyecto de código abierto de Android?
  • Todas mis preguntas sobre opencv_traincascade
  • Cómo leer el valor de cada píxel como valores RGB del objeto Mat m en OpenCV
  • Descripción de SURF más rápido con la detección de FAST?
  • UnsatisfiedLinkError: Método nativo no encontrado - Android
  • ¿Se puede utilizar un android.hardware.camera2.CaptureRequest con OpenCV?
  • Decodificación de flujo de vídeo en Android de DJI drone
  • OpenCV instalador independiente opencv
  • Reconocimiento Óptico de Caracteres Android con OpenCV
  • OpenCV en Android - Encabezados; No hay tal directorio de archivos
  • ¿Quieres encontrar la longitud focal primero entonces la distancia de la cara detectada en tiempo real utilizando opencv android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.