【发布时间】:2014-01-11 10:30:35
【问题描述】:
我在 java cv 人脸识别中的 EigenFaces.predict() 方法中遇到错误。错误是-
OpenCV Error: Image step is wrong (The matrix is not Continuous, 因此它的行数不能改变) in unknown function, file ......\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);
}
【问题讨论】:
-
所有图片均经过预处理,灰度化,尺寸相同(70*70)。我正在使用 open cv-2.4.7。
-
当我使用 LBPfaceRecognizer 时,它会给出错误 - OpenCV 错误:未实现功能/特征(使用原始本地二进制模式进行特征提取仅适用于单通道图像(给定 16)请通过图像数据为灰度图像!)。
-
我的训练和测试图像是灰度和预处理的,但他们的 nChanel 值为 3。我认为这是导致问题的原因。图像是否必须具有 nChanel 值 1?
-
是的,我将图像转换为 nChannel 值 1,它与 LBPH FaceceRecognizer 工作正常,但与 Eigen FaceRecognizer 和 FisherFace Recognizer 出现上述相同的错误。
标签: java opencv javacv face-recognition