将MatC从OpenCV保存到智能手机的内存中

时间:2015-11-24 15:51:50

标签: android image-processing opencv4android

我目前在Android中保存位图时遇到了困难。我正在研究一种能够检测人眼区域的系统。我有这个代码,可以将ROI保存到opencv中的Mat。

Rect eyearea_right = new Rect( RectOfFace.x + RectOfFace.width / 16 ,
                    (int) (RectOfFace.y + (RectOfFace.height / 4.5)) ,
                    (RectOfFace.width - 2 * RectOfFace.width / 16) / 2,
                    (int) (RectOfFace.height / 3.0)
            );

ROI = new Mat(mGray, eyearea_left);
                Bitmap bm = Bitmap.createBitmap((int) ROI.size().width, (int) ROI.size().height, Bitmap.Config.ARGB_8888);

但是,我很难将其保存到手机存储中。我需要查看图像或位图,以便让我知道如何处理图像以检测人是否正在闭上他/她的眼睛。另外,有没有办法在屏幕上打印/显示从OpenCV中的Mat派生的位图?谢谢。

这是我在互联网上找到的保存代码

String root = Environment.getExternalStorageDirectory().toString();
                File myDir = new File(root + "/saved_images");
                Log.i("Bitmap", root);
                myDir.mkdirs();
                int n = i;
                String path = Environment.getExternalStorageDirectory().toString();

                OutputStream fOut = null;
                File file = new File(path, "/saved_images/" + "image" + i + ".jpg");
                fOut = new FileOutputStream(file);

                bm.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
                fOut.flush();
                fOut.close();

                MediaStore.Images.Media.insertImage(getContentResolver()
                        , file.getAbsolutePath(), file.getName(), file.getName());

2 个答案:

答案 0 :(得分:0)

您正在创建位图。但它与投资回报率无关。只采取尺寸。不满足。所以它是空的。

答案 1 :(得分:0)

我找到了问题的答案。基本上,您需要使用submat函数才能获得Mat的一部分。 submat是Mat类中可用的函数。