首页 > 解决方案 > 读取 opencv_face.LBPHFaceRecognizer.getHistograms() 中的值

问题描述

我正在尝试使用 android 中的 open_cv 库。我以前从未研究过它,所以这可能是一个非常基本的问题。

我的识别器活动中有一个opencv_face.LBPHFaceRecognizer对象。我的要求是读取以前存储的人脸的直方图值。

            opencv_face.LBPHFaceRecognizer mFaceRecognizer = = createLBPHFaceRecognizer(2, 8, 8, 8, 95);
            File file = new File(RegisterActivity.getFilePath(mContext));
            mFaceRecognizer.load(file.getAbsolutePath());


            opencv_core.MatVector vector = mFaceRecognizer.getHistograms();
            for (int i = 0; i < vector.size(); i++) {
                opencv_core.Mat mat = vector.get(i);
                opencv_core.Size size = mat.size();
                for (int j = 0; j < size.height();j++)
                    for (int k = 0; k < size.width(); k++) {
                        // Here I want to ready the values (which would be same as the values in file am initializing mFaceRecognizer with) of these matrices but I am not able to find any appropriate method to do so.
                    }
            }

请帮助我完成所需的方法,我尝试了很多资源并浏览了文档,但是作为初学者,我认为我遗漏了一些东西。

我无法在 mat 对象中找到任何版本的 .get() 或 .at() 方法。

任何帮助将不胜感激。提前致谢。

标签: javaopencvmatopencv4androidlbph-algorithm

解决方案


我能够通过将 opencv_core.Mat 转换为 opencv_core.CvMat 对象来读取这些值。我不知道这个对象被标记为弃用的原因,但这对我来说很好:

            double[][] input = new double[(int)vector.size()][vector.get(0).size().width()];
            for (int i = 0; i < vector.size(); i++) {
                opencv_core.Mat mat = vector.get(i);
                (new opencv_core.CvMat(mat)).get(input[i]);
            }

此处的输入变量现在具有所有直方图的所需值。


推荐阅读