我正在尝试在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/