OpenCV: terminate handler is called! The last OpenCV error is: OpenCV(3.4.2) Error: Bad argument (Labels must be given as integer (CV_32SC1). Expected 4, but was 4.) in train, file J:\opencv\opencv_contrib-3.4.2\modules\face\src\eigen_faces.cpp, line 65
时间: 2023-12-28 17:39:47 浏览: 658
根据错误信息,OpenCV报告说标签应该作为整数(CV_32SC1)给出。错误信息中还提到期望的标签数是4,但实际上是4。这个错误可能是由于以下原因之一引起的:
1. 标签类型错误:确保`labels`向量中的标签是整数类型(CV_32SC1)。你可以使用`int`类型的变量作为标签。
2. 标签数量错误:检查`labels`向量中的标签数量是否与训练图像数量匹配。根据错误信息,期望的标签数量是4,所以确保`labels`向量中有4个标签。
请检查并确保上述两个方面都正确。如果问题仍然存在,请提供更多相关的代码和错误信息,以便我们能够更好地理解和帮助你解决问题。
相关问题
OpenCV: terminate handler is called! The last OpenCV error is: OpenCV(3.4.2) Error: Bad argument (Empty training data was given. You'll need more than one sample to learn a model.) in train, file J:\opencv\opencv_contrib-3.4.2\modules\face\src\eigen_faces.cpp, line 62
根据错误提示,OpenCV 报告了一个错误:`Empty training data was given. You'll need more than one sample to learn a model.` 这意味着在训练模型时提供了空的训练数据。
这个错误通常是由于以下几个原因导致的:
1. 训练数据为空:请确保在调用训练函数之前,`newtrainingImages`变量已经正确地填充了至少一张人脸图像。检查一下是否正确读取并加载了训练图像。
2. 数据格式不正确:确保你提供的训练图像具有正确的格式和尺寸。通常情况下,训练图像应该是灰度图像,并且具有相同的尺寸。
3. 数据量不足:如果你提供的训练图像数量太少,可能会导致模型无法学习。确保你有足够的训练图像来训练模型。
解决这个问题的方法是检查并确保你正确地填充了训练数据,并且数据的格式和数量是正确的。你可以尝试使用更多的训练图像来训练模型,以确保模型能够学到足够的人脸特征。
如果问题仍然存在,请提供更多相关的代码和错误信息,以便我们能够更好地理解和帮助你解决问题。
OpenCV: terminate handler is called! The last OpenCV error is: OpenCV(3.4.2) Error: Unspecified error (File can't be opened for reading!) in read, file J:\opencv\opencv_contrib-3.4.2\modules\face\src\facerec.cpp, line 61
这个错误信息表明在读取文件时出现了问题。根据错误信息,该错误发生在 OpenCV 的 facerec 模块的 facerec.cpp 文件的第61行。
这个错误通常是由于文件路径错误、文件不存在或者文件权限问题引起的。请确保你的代码中指定的文件路径是正确的,并且文件存在且可读。你可以检查以下几个方面:
1. 确认文件路径:检查你的代码中指定的文件路径是否正确,包括文件名和文件所在目录。
2. 检查文件是否存在:确保指定的文件存在于指定的路径下。你可以手动在文件资源管理器中验证一下。
3. 检查文件权限:确保你的程序有足够的权限来读取该文件。如果你在程序中使用了管理员权限,尝试以管理员身份运行程序。
如果仍然无法解决问题,你可以尝试使用其他方法来读取文件,例如使用绝对路径或者相对于当前工作目录的相对路径。另外,还可以检查你的 OpenCV 版本是否与你使用的其他库或依赖项兼容。
如果以上方法仍然无法解决问题,建议提供更多的代码和错误信息,以便更详细地分析和解决问题。
阅读全文