获取openCv错误 - 图像步骤在EigenFaces.Predict()方法中是错误的

时间:2013-12-23 08:23:50

标签: java opencv javacv face-recognition

我在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);    

}

1 个答案:

答案 0 :(得分:2)

最后我得到了问题的解决方案。我的测试和训练图像的大小是70 * 70。 我将尺寸改为200 * 200,现在它完美无缺。其背后的原因是EigenFaceRecognizer和FisherFaceRecognizer不能使用不是8或16的倍数的图像宽度(在我的情况下)。 70不是8的倍数所以它不起作用但是对于图像宽度200(8的倍数),它工作正常。