【问题标题】:Training and Test images must be of equal size! OpenCV Crash iOS训练和测试图像的大小必须相同! OpenCV 崩溃 iOS
【发布时间】:2018-07-30 00:08:43
【问题描述】:

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

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)。有什么问题,我该如何解决?

【问题讨论】:

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


    【解决方案1】:

    错误消息非常清楚地说明出了什么问题。 您正在对尺寸为 3000x4000 的图像训练 FisherFaceRecognizer,但尝试将其应用于较小的图像。

    tl;博士: 最快解决您的问题的方法可能是调整您的训练数据的大小以匹配您的测试数据。

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

    【讨论】:

    • 我的训练和测试图像大小相同。发布问题后,我意识到问题可能是我将图像存储在 assets.xcassets 中,因为该文件用于矢量和应用程序图标,Xcode 可能会自动将图像大小调整为 40x40 或类似的东西.我目前正在通过将图像留在主包中来测试这个理论。我会报告情况如何。感谢@s1h 的建议
    • 我的理论不正确。我发现问题在于,在初始化图像后,我从图像中裁剪出脸部,然后在模型中运行。我正在开发一个程序来将该图像的大小从 40x40 调整为 3000x4000。谢谢你的帮助! @s1h
    猜你喜欢
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多