matrix.cpp:310: 错误: (-215) s >= 0 in function cv::setSize

Posted

技术标签:

【中文标题】matrix.cpp:310: 错误: (-215) s >= 0 in function cv::setSize【英文标题】:matrix.cpp:310: error: (-215) s >= 0 in function cv::setSize 【发布时间】:2018-05-31 00:59:05 【问题描述】:

我对 python 很陌生。我正在使用 face_recognizer = cv2.face.LBPHFaceRecognizer_create() 并将我的预测函数定义为

#this function recognizes the person in image passed
#and draws a rectangle around detected face with name of the 
#subject
def predict(test_img):
#make a copy of the image as we don't want to chang original image
img = test_img.copy()
#detect face from the image
face, rect = detect_face(img)

#predict the image using our face recognizer 
label= face_recognizer.predict(face)
#get name of respective label returned by face recognizer
label_text = subjects[label]

#draw a rectangle around face detected
draw_rectangle(img, rect)
#draw name of predicted person
draw_text(img, label_text, rect[0], rect[1]-5)

return img`

我在使用预测函数预测人脸时出现以下错误

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-13-d6517b4e38bd> in <module>()
  6 
  7 #perform a prediction
----> 8 predicted_img1 = predict(test_img1)
  9 #predicted_img2 = predict(test_img2)
 10 print("Prediction complete")

<ipython-input-12-b46266ecb9d5> in predict(test_img)
  9 
 10     #predict the image using our face recognizer
---> 11     label= face_recognizer.predict(face)
 12     #get name of respective label returned by face recognizer
 13     label_text = subjects[label]

error: C:\projects\opencv-python\opencv\modules\core\src\matrix.cpp:310: 
error: (-215) s >= 0 in function cv::setSize

在此先感谢

【问题讨论】:

detect_face() 是否有可能向您提供一些指示(例如,face is None)它没有找到人脸,并且您正在处理无效的rect @DaveW.Smith,我没有收到您提到的任何错误。上面提到的一个是我得到的唯一错误。 有时,如果您传递无效输入,底层 OpenCV C++ 代码会出现一些奇怪的错误。 print(repr(face)) 在调用 face_recognizer.predict() 之前做了什么? @DaveW.Smith,我使用了git repo 的代码,只更改了face_recognizer = cv2.face.LBPHFaceRecognizer_create() 仔细查看detect_face() 方法。请注意,如果找不到人脸,它将返回 None, None。您复制的调用该方法的示例方法不检查None。我怀疑这就是问题的根源。 【参考方案1】:

我正在测试同一个 github 项目,在添加新的训练图像和测试图像时遇到了同样的错误。当使用训练数据中的一张图像作为测试图像时,问题就消失了。所以问题是当没有找到匹配项时,就像@DaveW.Smith 建议的那样,没有什么可以处理的。

【讨论】:

以上是关于matrix.cpp:310: 错误: (-215) s >= 0 in function cv::setSize的主要内容,如果未能解决你的问题,请参考以下文章

推特 API 错误 215

错误:(-215:断言失败)!函数'cv :: CascadeClassifier :: detectMultiScale'中的empty()

Twitter API 返回错误 215,错误的身份验证数据

尝试检测人脸时断言失败 215 错误

错误:(-215:Assertion failed) !ssize.empty() in function 'resize'

Twitter 错误 215 使用 Fabric Android SDK 和 Retrofit 上传媒体