OpenCV与Android捕获图像

时间:2013-10-07 07:05:57

标签: android opencv android-camera

在Android中捕获图像并使用opencv处理它们的最佳方法是什么? 我应该使用表面视图As here还是应该像opencv样本一样使用opencv相机?以及如何加载捕获的图像并将其转换为Mat? 提前致谢

 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());
        }
    }

1 个答案:

答案 0 :(得分:8)

在OpenCV示例中,有一个CameraBridgeViewBase,可帮助捕获,处理和显示相机预览的结果(连续的低分辨率图像流)。

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

您还可以通过使用BitmapFactory.decodeByteArray()从数据数组创建位图,然后使用Utils.bitmapToMat()将位图转换为Mat来避免写入和读取文件