Python 当图像没有目标对象时,YOLO推断崩溃

Python 当图像没有目标对象时,YOLO推断崩溃,python,opencv,image-processing,computer-vision,dnn-module,Python,Opencv,Image Processing,Computer Vision,Dnn Module,假设YOLO模型是基于人员进行训练的。我正在使用Opencv DNN进行推断。然后,我使用输出边界框进行进一步的图像处理来测量距离 当我为没有目标对象的道路运行推断时,假设没有人,程序崩溃并给我一个错误。示例图像为: 以下是推论: classes, scores, boxes = model.detect(image, CONFIDENCE_THRESHOLD, NMS_THRESHOLD) for (classid, score, box) in zip(classes, scores,

假设YOLO模型是基于人员进行训练的。我正在使用Opencv DNN进行推断。然后,我使用输出边界框进行进一步的图像处理来测量距离

当我为没有目标对象的道路运行推断时,假设没有人,程序崩溃并给我一个错误。示例图像为:

以下是推论:

classes, scores, boxes = model.detect(image, CONFIDENCE_THRESHOLD, NMS_THRESHOLD)


for (classid, score, box) in zip(classes, scores, boxes):
    color = COLORS[int(classid) % len(COLORS)]
    cv2.rectangle(image, box, color, 2)


# other image processing steps
image, px, py=measurement.original(box,image)
我的问题是:当场景中没有人时,它会崩溃,因为它找不到任何要检测的目标对象来进行测量,没有边界框。如何解决此问题?并返回打印“未找到目标”作为输出。 我得到的错误:

File "detection.py", line 72, in <module>
    image, px, py=measurement.original(box,image)
NameError: name 'box' is not defined
文件“detection.py”,第72行,在
图像,px,py=测量值。原始(框,图像)
名称错误:未定义名称“框”

PS:如果有一个边界框,它会返回一个类似:[[1251 612 75 79]]的值,但是如果没有边界框,它不会返回任何值,空白

在这种情况下,框的值是多少?好问题。如果有一个边界框,它会返回一个类似:[[1251 612 75 79]]的值,但如果没有边界框,它不会返回任何内容,为空。是的,这是理想情况。所以我想,现在你可以解决这个问题了。只要使用
条件检查或类似检查,如果没有值为零或为空的变量,请打印框的值并将输出放在此处。它可能是一个空列表,也可能没有。如前所述,我认为您被python的变量范围弄糊涂了。该“box”变量的作用域为for循环。如果框列表中没有任何内容,则不会实际创建变量,因为循环会立即终止。如果有框,则for循环后的box变量只是列表中的最后一个框。