2013-10-07 2 views
2

Что является лучшим способом для захватить изображений в android и обрабатывать их с opencv? Должен ли я использовать вид поверхности As here или я должен использовать opencv-камеру, как в образцах opencv? и как я могу загрузить захваченное изображение и преобразовать его в Mat? Заранее спасибоOpenCV с Android Capture Images

private PictureCallback mPicture = new PictureCallback() { 

     @Override 
    public void onPictureTaken(byte[] data, Camera camera) { 

     File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE); 
     if (pictureFile == null) { 
      Log.d("E", 
        "Error creating media file, check storage permissions "); 
      return; 
     } 

     try { 

      FileOutputStream fos = new FileOutputStream(pictureFile); 
      fos.write(data); 
      fos.close(); 
      //processImage(); 
     } catch (FileNotFoundException e) { 
      Log.d("E", "File not found: " + e.getMessage()); 
     } catch (IOException e) { 
      Log.d("E", "Error accessing file: " + e.getMessage()); 
     } 
    } 
+0

Для того, что OpenCV используется? – WISHY

+0

Это компьютерное зрение с открытым исходным кодом, используемое для обработки изображений – QAIS

ответ

8

В образцах OpenCV Eсть CameraBridgeViewBase, который помогает в сбор, обработку и показывать результаты камеры предварительного просмотра (непрерывный поток изображений с низким разрешением).

Если вы хотите обработать один захват с большим разрешением, вы должны использовать что-то похожее на onPictureTaken(). Затем вы можете прочитать изображение с помощью Highgui.imread() и обработать его.

Вы также можете избежать написания и чтения в файл путем создания растрового изображения из массива данных с BitmapFactory.decodeByteArray(), а затем преобразование растрового изображения к мату с использованием Utils.bitmapToMat()