我试图做一个FisherFaceRecognizer的预测()方法的工作,但我一直收到错误给定矩阵
错误的参数(错误的形状给定矩阵。当时大小(SRC) = (1,108000),size(W)=(36000,1)。)在subspaceProject中,文件 /tmp/opencv-DCb7/OpenCV-2.4.3/modules/contrib/src/lda.cpp,第187行
这类似于被要求在Wrong shapes for given matrices in OPENCV 但对我来说一个问题,源和培训图像是相同的数据类型,全色。
我的代码是从教程适合于http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html#fisherfaces
但是,我的测试图像比训练图像越大,所以我需要在大小合适的利息率(ROI)的区域工作。
下面是我如何阅读图像和转换大小。我克隆的ROI矩阵,因为 以前的错误信息告诉我的目标矩阵必须是连续的:
vector<Mat> images;
images.push_back(cvLoadImage(trainingList[i].c_str()));
IplImage* img;
img = cvLoadImage(imgName.c_str());
// take ROI and clone into a new Mat
Mat testSample1(img, Rect(xLoc, yLoc, images[0].cols, images[0].rows));
Mat testSample = testSample1.clone();
// Create a FisherFaceRecognizer in OpenCV
Ptr<FaceRecognizer> FFR = createFisherFaceRecognizer(0,DBL_MAX);
model->train(images, labels);
cout << " check of data type testSample is " << testSample.type() << " images is " << images[0].type() << endl;
int predictedLabel = model->predict(testSample);
//
我得到一个异常消息在预测声明。
的COUT语句告诉我两个矩阵有16型,但不知何故仍然不相信矩阵是相同的大小和数据类型...
我发现我需要为培训和测试图像指定灰度,如下所示: – user2055867 2013-02-28 18:30:54