2013-12-23 2 views
2

Я получаю ошибку в методе EigenFaces.predict() в распознавании лица Java. Ошибка IS-получение openCv error- Шаг изображения неправильный в методе EigenFaces.Predict()

OpenCV Error: Image step is wrong (The matrix is not continuous, thus its number of rows can not be changed) in unknown function, file ......\src\opencv\modules\core\src\matrix.cpp, line 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

Все изображения предварительно обработаны, имеют серый размер и одинакового размера (70 * 70). Я использую open cv-2.4.7. – vivek

+0

, когда я использую LBPfaceRecognizer, он дает ошибку - ошибка OpenCV: функция/функция не реализована (использование оригинальных локальных двоичных паттернов для извлечения функции работает только на одноканальных изображениях (данные 16) Пожалуйста, передайте данные изображения как изображение в градациях серого !). – vivek

+0

Мои обучающие и тестовые изображения имеют серый масштаб и предварительно обработаны, но значение nChanel равно 3. Я думаю, что это вызывает проблему. Нужно ли, чтобы изображения имели значение nChanel 1? – vivek

ответ

2

Наконец я получил решение моей проблемы. Размер моих тестовых и учебных изображений составлял 70 * 70. Я изменил размер до 200 * 200, и теперь он отлично работает. Причина этого в том, что EigenFaceRecognizer и FisherFaceRecognizer не работают с шириной изображения, которая не кратная 8 или 16 (в моем случае). 70 не кратно 8, поэтому он не работает, но для ширины изображения 200 (кратный 8), он работает нормально.

Смежные вопросы