Android flujo óptico con opencv

Estoy tratando de implementar el flujo óptico en Android usando openCV http://code.google.com/p/android-opencv/ . Básicamente quiero construir algo como esto http://www.youtube.com/watch?v=P_Sjn67jIJY . De todos modos porque im nuevo en el desarrollo de Android puede alguien guía en algún lugar con el fin de construir algo como el del video? Ya he instalado el puerto opencv a android y construyo el ejemplo cvcamera con éxito usando eclipse. Gracias, Thanos

4 Solutions collect form web for “Android flujo óptico con opencv”

Vea este enlace de flujo óptico OpenCV de Stanford. Las cosas deben funcionar esencialmente de la misma manera, excepto que las llamadas pueden ser ligeramente diferentes debido a 1.x vs 2.x C vs C ++ API problemas.

Simplemente edite el ejemplo de CVCamera y debe ser rápido. Hice una aplicación de detección de la cara en tiempo real dentro de una hora de conseguir CVCamera para trabajar.

Visite http://opencv.willowgarage.com/wiki/Android2.3.0 , OpenCV 2.3.0 Release Candidate tiene un buen soporte para Android. Hay flujo óptico dentro de él .. lo usó

Aunque también estoy tratando de hacer lo mismo, parece que hay más apoyo para el flujo óptico en OpenCV4Android ahora. Mira las API en org.opencv.video OpenCV Java documentación Veo calcOpticalFlowPyrLK y calcOpticalFlowFarneback. Pude conseguir calcOpticalFlowFarneback para trabajar (aunque los resultados no parecían tan grandes, posiblemente necesidad de ajustar los parámetros) calcOpticalFlowPyrLK está resultando ser complicado. No puedo convertir los puntos clave devueltos por la clase FeatureDetector (MatOfKeyPoint) a los puntos necesarios por calcOpticalFlowFarneback (MatOfPoint2f) otro hilo

Este código le ayudará a obtener los vectores ópticos. Y los rastreará

@Override public Mat enCameraFrame (CvCameraViewFrame inputFrame) {

mRgba = inputFrame.rgba(); if (mMOP2fptsPrev.rows() == 0) { //Log.d("Baz", "First time opflow"); // first time through the loop so we need prev and this mats // plus prev points // get this mat Imgproc.cvtColor(mRgba, matOpFlowThis, Imgproc.COLOR_RGBA2GRAY); // copy that to prev mat matOpFlowThis.copyTo(matOpFlowPrev); // get prev corners Imgproc.goodFeaturesToTrack(matOpFlowPrev, MOPcorners, iGFFTMax, 0.05, 20); mMOP2fptsPrev.fromArray(MOPcorners.toArray()); // get safe copy of this corners mMOP2fptsPrev.copyTo(mMOP2fptsSafe); } else { //Log.d("Baz", "Opflow"); // we've been through before so // this mat is valid. Copy it to prev mat matOpFlowThis.copyTo(matOpFlowPrev); // get this mat Imgproc.cvtColor(mRgba, matOpFlowThis, Imgproc.COLOR_RGBA2GRAY); // get the corners for this mat Imgproc.goodFeaturesToTrack(matOpFlowThis, MOPcorners, iGFFTMax, 0.05, 20); mMOP2fptsThis.fromArray(MOPcorners.toArray()); // retrieve the corners from the prev mat // (saves calculating them again) mMOP2fptsSafe.copyTo(mMOP2fptsPrev); // and save this corners for next time through mMOP2fptsThis.copyTo(mMOP2fptsSafe); } /* Parameters: prevImg first 8-bit input image nextImg second input image prevPts vector of 2D points for which the flow needs to be found; point coordinates must be single-precision floating-point numbers. nextPts output vector of 2D points (with single-precision floating-point coordinates) containing the calculated new positions of input features in the second image; when OPTFLOW_USE_INITIAL_FLOW flag is passed, the vector must have the same size as in the input. status output status vector (of unsigned chars); each element of the vector is set to 1 if the flow for the corresponding features has been found, otherwise, it is set to 0. err output vector of errors; each element of the vector is set to an error for the corresponding feature, type of the error measure can be set in flags parameter; if the flow wasn't found then the error is not defined (use the status parameter to find such cases). */ Video.calcOpticalFlowPyrLK(matOpFlowPrev, matOpFlowThis, mMOP2fptsPrev, mMOP2fptsThis, mMOBStatus, mMOFerr); cornersPrev = mMOP2fptsPrev.toList(); cornersThis = mMOP2fptsThis.toList(); byteStatus = mMOBStatus.toList(); y = byteStatus.size() - 1; for (x = 0; x < y; x++) { if (byteStatus.get(x) == 1) { pt = cornersThis.get(x); pt2 = cornersPrev.get(x); Core.circle(mRgba, pt, 5, colorRed, iLineThickness - 1); Core.line(mRgba, pt, pt2, colorRed, iLineThickness); } } return mRgba; } 
  • Cortar la imagen después de seleccionar el área mediante la detección de bordes en android
  • OpenCV Android - No se puede resolver la función JNI correspondiente
  • Cómo averiguar la cara detectada es real o falsa
  • Native OpenCV Samples para Android lanza UnsatisfiedLinkError
  • Ejecución de la aplicación Android + Opencv + NDK en un dispositivo real
  • Conversión de NV21 a RGB mediante OpenCV en Android
  • JavaCV + Android Studio + gradle- posible?
  • Android y OpenCV: Homography to Camera Pose considerando la cámara intrínseca y la retroproyección
  • Convertir Mat a Bitmap Opencv para Android
  • SURF Feature Extraction con Android OpenCV SDK - Obtener algunos errores
  • ¿Cómo utilizar Java con NDK Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.