2013-10-07 58 views
2

什么是capture图片在android中的最佳途径,并使用opencv处理它们? 我应该使用表面视图As here或我应该使用opencv相机opencv样品?以及如何加载捕获的图像并将其转换为Mat? 预先感谢OpenCV with 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的样本有一个CameraBridgeViewBase,有助于捕获,处理和显示相机预览的结果(较低分辨率的图像的连续流)。

如果您想要以更高的分辨率处理单个捕获,则应该使用与onPictureTaken()类似的内容。然后,您可以使用Highgui.imread()阅读图像并对其进行处理。

你也可以避免编写,并通过创建从BitmapFactory.decodeByteArray()数据阵列中的位图,然后将位图转换为使用Utils.bitmapToMat()