gpt4 book ai didi

android - OpenCV4Android FaceRecognizer.predict(Mat src, int[] labels, double[] confidence) 与 OpenCV FaceRecognizer.predict(Mat src)

转载 作者:太空宇宙 更新时间:2023-11-03 22:29:43 28 4
gpt4 key购买 nike

谁能帮我解决我的问题?我似乎无法从互联网上得到任何答案。我一直在寻找一整天。所以这是我的问题。我正在使用 opencv4android 2.4.10 和 Android Studio 作为我的 IDE 创建人脸识别 android 应用程序。

我需要使用 FaceRecognition.predict(Mat src, int[] labels, double[] confidence) 来获取正在检测的人。但是我研究过的大多数教程只有 FaceRecognition.predict(Mat src)我不确定从哪里获得 int[] 标签和 double[] 置信度。如果有人可以教我如何执行此操作,我将不胜感激。

示例代码:

File[] imageFiles = root.listFiles(imgFilter);

Mat labels = new Mat(imageFiles.length, 1, CvType.CV_32SC1);
List<Mat> images = (List<Mat>) new Mat(imageFiles.length);

int counter = 0;
int label;

//get all person id and images
for (File image : imageFiles) {
Mat img = Highgui.imread(image.getAbsolutePath(), 0);
images.add(counter, img);

label = Integer.parseInt(image.getName().split("-")[0]);
labels.put(counter, 0, label);

counter++;
}
//I created a java wrapper for this method
//this works just fine.
FaceRecognizer facerec = new FisherFacesRecognizer();

facerec.train(images, labels);

//my problem is here, the parameters are supposed to be
//*Mat src, int[] labels, double[] confidence*
//but most tutorials only have *Mat src*
int predictedLabel = facerec.predict(grayImg);

最佳答案

这两个函数本质上做同样的事情 - 返回已识别的 ID。

另一个重载额外返回到数据库中最佳项目的距离值(更小==更好)。因为不能从 java(或 C++)中的函数返回超过 1 个值,所以这是通过引用传递完成的。所以要么使用:

   int predictedLabel = facerec.predict(grayImg);

或者,(如果你知道距离):

   int[] prediction = {0};
double[] distance = {0};

facerec.predict(grayImg, prediction, distance);

int predictedLabel = prediction[0];
double dist = distance[0];

关于android - OpenCV4Android FaceRecognizer.predict(Mat src, int[] labels, double[] confidence) 与 OpenCV FaceRecognizer.predict(Mat src),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28778394/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com