我正在尝试在Android上开发人脸识别应用程序,并且正在使用JavaCV + OpenCV 2.4.2来使用Philipp Wagner的人脸识别类。

该类具有一个Train方法,该方法接受Mat和Integer数组作为输入(在C++中):

vector<Mat> images;
vector<int> labels;

Ptr<FaceRecognizer> model = createFisherFaceRecognizer();
model->train(images, labels);

JavaCV接受'train'方法的属性作为train(MatVector arg0, CvArr arg1),这就是我遇到的问题!

我在尝试将数据加载到CvArr时遇到一些麻烦...我已经将标签作为数据字符串...但是我似乎找不到找到将这些标签作为数组插入CvArr的方法...我们称其为缺乏OpenCV知识...有人可以帮助我解决这个问题吗?

附言:顺便说一句,我知道可以使用iplImage代替CvArr,但是问题仍然存在:如何将<int>数组插入iplImage?

最佳答案

MatVector images = new MatVector(numberOfImages);
CvMat labels= cvCreateMat(1,numberOfImages,CV_32SC1);

images.put(0, cvLoadImage("D:/att_faces/test/p1/1.pgm"));
labels.put(0,0);

images.put(1, cvLoadImage("D:/att_faces/test/p1/2.pgm"));
labels.put(1,0);

images.put(2, cvLoadImage("D:/att_faces/test/p2/1.pgm"));
labels.put(2,1);

images.put(3, cvLoadImage("D:/att_faces/test/p2/2.pgm"));
labels.put(3,1);

......
FaceRecognizerPtr model = createEigenFaceRecognizer(0,1000);
model.get().train(images, labels);
......

关于opencv - 如何在OpenCV中将<int>数组插入CvArr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11913980/

10-08 21:33