训练和测试图像必须大小相同! OpenCV Crash iOS

时间:2018-02-19 17:46:06

标签: ios objective-c opencv objective-c++ face-recognition

我正在使用费雪脸识别器。当我调用预测函数时,应用程序崩溃了。这就是它在日志中所说的......

Face DetectedOpenCV(3.4.0-dev) Error: Bad argument (Wrong input image size. Reason: Training and Test images must be of equal size! Expected an image with 12000000 elements, but got 1296.) in predict, file /Users/Name/Desktop/OpenCVBuild/opencv_contrib/modules/face/src/fisher_faces.cpp, line 140
libc++abi.dylib: terminating with uncaught exception of type cv::Exception: OpenCV(3.4.0-dev) /Users/Name/Desktop/OpenCVBuild/opencv_contrib/modules/face/src/fisher_faces.cpp:140: error: (-5) Wrong input image size. Reason: Training and Test images must be of equal size! Expected an image with 12000000 elements, but got 1296. in function predict

(lldb) 

我的训练和测试图像大小相同(3000x4000)。问题是什么?如何解决?

1 个答案:

答案 0 :(得分:0)

错误信息非常清楚错误。 您正在对尺寸为3000x4000的图像训练FisherFaceRecognizer,但尝试将其应用于较小的图像。

<强> TL; DR: 解决问题的最快解决方案可能是调整训练数据的大小以匹配您的测试数据。

<强>说明: FisherFaces方法计算投影矩阵 W 以将输入数据投影到较低维空间,使得属于同一类的数据点紧密地组合在一起,而不同类的数据点被很好地分开。 这最小化了类重叠并允许更好的类分离/分类。 由于该投影矩阵是根据训练数据计算的,因此它具有数据特定大小。因此,为了将矩阵应用于测试数据,它必须与训练数据的大小相同。