for det in pred: # 每张图片的检测 if len(det): # 将框从 img 大小重新缩放为 original_image 大小 # 将预测信息映射到原图(坐标框的位置信息映射回原图,填入det中前面的4个位置信息上) det[:, :4] = scale_coords(img.shape[2:], det[:, :4], original_image.shape).round() # ====写入结果==== #打印检测到的类别名称和数量 for *xyxy, conf, cls in reversed(det): c = int(cls) # integer class label = (self.names[c] if args.hide_conf else f'{self.names[c]} {conf:.2f}') #保存边框大小 x1, y1 = int(xyxy[0]), int(xyxy[1]) x2, y2 = int(xyxy[2]), int(xyxy[3]) pred_boxes.append( (x1, y1, x2, y2, c, conf)) count += 1 key = '{}-{:02}'.format(self.names[c], count) image_info[key] = ['{}×{}'.format( x2 - x1, y2 - y1), np.round(float(conf), 3)] plot_one_box(xyxy, original_image, label=label, color=colors(c, True), line_thickness=2) # Save results (image with detections) # cv2.imwrite(save_path, original_image) print(f'Done. ({time.time() - t0:.3f}s)') return original_image,image_info
时间: 2024-02-10 07:35:01 浏览: 190
EfficientDet_PyTorch:EfficientDet_PyTorch目标检测(对象检测)
这段代码的作用是:对每张图片的预测结果进行处理,包括将检测到的框从 img 大小缩放到原始图片大小,将预测信息映射回原图并保存边框大小、类别和置信度等信息。最后,将结果绘制在原始图片上,并返回绘制后的图片和保存的信息。其中,pred 是检测结果,original_image 是原始图片,image_info 是保存的信息。该代码还包括一些绘图处理,如将边框绘制到原始图片上。
阅读全文