我在java cv人脸识别中的EigenFaces.predict()方法中遇到错误。错误是 -
OpenCV错误:图像步骤错误(矩阵不连续,因此其行数无法更改)未知函数,文件...... \ src \ opencv \ modules \ core \ src \ matrix .cpp,第802行
我的代码是 -
public static void main(String[] args) {
long size=6;
MatVector imgs=new MatVector(size);
int[] id={0,0,0,0,0,0};
FaceRecognizer fr=opencv_contrib.createEigenFaceRecognizer();
for(int i=0;i<=5;i++)
{
String url="C:/Users/vivek/Documents/NetBeansProjects/Recognizer2/src/a"+(i+1)+".jpg";
IplImage img=opencv_highgui.cvLoadImage(url);
imgs=imgs.put(i,img);
}
fr.train(imgs,id);
IplImage testImage=opencv_highgui.cvLoadImage("C:/Users/vivek/Documents/NetBeansProjects/Recognizer2/src/a3.jpg");
CvMat mat= testImage.asCvMat();
int val=fr.predict(mat);
System.out.println(val);
}
答案 0 :(得分:2)
最后我得到了问题的解决方案。我的测试和训练图像的大小是70 * 70。 我将尺寸改为200 * 200,现在它完美无缺。其背后的原因是EigenFaceRecognizer和FisherFaceRecognizer不能使用不是8或16的倍数的图像宽度(在我的情况下)。 70不是8的倍数所以它不起作用但是对于图像宽度200(8的倍数),它工作正常。