I got this weird error. Do you know what went wrong here?? I think I
set every thing up right...... still cvCalcEigenObjects() is a
problem. thanks.
OpenCV Error: One of arguments' values is out of range (index is out
of range) in cvPtr2D, file /opt/local/var/macports/build/
_opt_local_var_macports_sources_rsync.macports.org_release_ports_graphics_opencv/
work/OpenCV-2.2.0/modules/core/src/array.cpp, line 1795
Exception in thread "main" java.lang.RuntimeException: /opt/local/var/
macports/build/
_opt_local_var_macports_sources_rsync.macports.org_release_ports_graphics_opencv/
work/OpenCV-2.2.0/modules/core/src/array.cpp:1795: error: (-211) index
is out of range in function cvPtr2D
at com.googlecode.javacv.cpp.opencv_legacy.cvCalcEigenObjects(Native
Method)
at Eigenface.doPCA(Eigenface.java:155)
at Eigenface.learn(Eigenface.java:73)
at Eigenface.main(Eigenface.java:57)
static void doPCA() {
CvSize faceImgSize = new CvSize(25);
// set the number of eigenvalues to use
nEigens = nTrainFaces;
eigenVectArr = new IplImage[nEigens];
for (int i = 0; i < nEigens; i++)
eigenVectArr[i] = cvCreateImage(faceImgSize, IPL_DEPTH_32F, 1);
// allocate the eigenvalue array
eigenValMat = cvCreateMat( 1, nEigens, CV_32FC1 );
// allocate the averaged image
pAvgTrainImg = cvCreateImage(faceImgSize, IPL_DEPTH_32F, 1);
// set the PCA termination criterion
CvTermCriteria calcLimit = cvTermCriteria( CV_TERMCRIT_ITER,
nEigens, 1);
float[] outputEigenValues = new float[nTrainFaces];
cvCalcEigenObjects(nTrainFaces,
new PointerPointer(faceImgArr),
new PointerPointer(eigenVectArr),
CV_EIGOBJ_NO_CALLBACK,
0,
null,
calcLimit,
pAvgTrainImg,
outputEigenValues);
cvNormalize(eigenValMat, eigenValMat);