def result(self, image_path): image = cv2.imread(image_path) # 图片读取 bboxes_pr, layer_n, best_bboxes = self.predict(image) # 预测结果 print(bboxes_pr) bboxes_pr, layer_n = correct_bboxes(bboxes_pr, layer_n) print(bboxes_pr) print(layer_n) print(best_bboxes)
def result(self, image_path): image = cv2.imread(image_path) # 图片读取 org_h, org_w, org_c, bboxes_pr, layer_n, best_bboxes = self.predict( image) # 预测结果 bboxes_pr, layer_n, best_bboxes = correct_bboxes( bboxes_pr, layer_n, best_bboxes) print(bboxes_pr) print(layer_n) return org_h, org_w, org_c, bboxes_pr, layer_n
def result(self, image_path): image = cv2.imread(image_path) # 图片读取 bboxes_pr, layer_n = self.predict(image) # 预测结果 print(bboxes_pr) bboxes_pr, layer_n = correct_bboxes(bboxes_pr, layer_n) major_pre = cls_major_result(int(bboxes_pr[0][-1])) print(major_pre) print(layer_n) if self.write_image: image = utils.draw_bbox(image, bboxes_pr, show_label=self.show_label) drawed_img_save_to_path = str(image_path).split("/")[-1] cv2.imwrite(drawed_img_save_to_path, image)
end_time0 = time.time() new_classes = {v: k for k, v in classes_id39.items()} print("加载时间:", end_time0 - start_time) cls_list = os.listdir(img_root) nore = 0 error_nu = 0 rig_0 = 0 for c in tqdm(cls_list): img_dir = img_root + "/" + c save_dir = save_root + "/" + c if not os.path.exists(save_dir): os.mkdir(save_dir) for img in tqdm(os.listdir(img_dir)): img_path = img_dir + "/" + img image = cv2.imread(img_path) # 图片读取 bboxes, layer_n, best_bboxes = Y.predict(image) bboxes, layer_n, best_bboxes = correct_bboxes(bboxes, layer_n, best_bboxes) # 矫正输出结果 bboxes, layer_n = get_potatoml(bboxes, layer_n) # 根据输出结果对中大红薯,中大土豆做输出 he = he_foods(bboxes) # print(img, bboxes) image_detect = utils.draw_bbox(image, bboxes, show_label=True) if len(bboxes) > 0: cls = int(bboxes[0][-1]) score = round(bboxes[0][-2], 2) cls_name = new_classes[int(cls)] print(cls, classes_id39[c], he) save_dir_cls = save_dir + "/{}".format(cls_name) if not os.path.exists(save_dir_cls): os.mkdir(save_dir_cls)
acc_80_jpg = 0 acc_60_jpg = 0 acc_30_jpg = 0 acc_00_jpg = 0 error_jpg = 0 clses = os.listdir(img_root) for c in tqdm(clses): if c not in ["hu", "others"]: img_dir = img_root + "/" + c for img in os.listdir(img_dir): if img.endswith("jpg"): all_jpg += 1 img_path = img_dir + "/" + img end_time1 = time.time() bboxes_p, layer_, best_bboxes = Y.result(img_path) bboxes_pr, layer_n, best_bboxes = correct_bboxes( bboxes_p, layer_, best_bboxes) # 矫正输出结果 bboxes_pr, layer_n = get_potatoml( bboxes_pr, layer_n) # 根据输出结果对中大红薯,中大土豆做输出 # 图片保存 image = cv2.imread(img_path) if len(bboxes_pr) == 0: acc_00_jpg += 1 if not os.path.exists(save_dir + "/noresult"): os.mkdir(save_dir + "/noresult") shutil.copy(img_path, save_dir + "/noresult" + "/" + img) else: image = utils.draw_bbox(image, bboxes_pr, show_label=True) # 画图
org_h, org_w, pred_bbox, bboxes, layer_n = Y.result( img_path, save_dir) best_bboxes_3 = Y.get_top_cls(pred_bbox, org_h, org_w, 3) # 获取top_n类别和置信度 best_bboxes_5 = Y.get_top_cls(pred_bbox, org_h, org_w, 5) # 获取top_n类别和置信度 best_bboxes_8 = Y.get_top_cls(pred_bbox, org_h, org_w, 9) # 获取top_n类别和置信度 best_bboxes_10 = Y.get_top_cls(pred_bbox, org_h, org_w, 10) # 获取top_n类别和置信度 if len(bboxes) == 0: noresults += 1 shutil.copy(img_path, img_noresult_dir + "/" + img) else: bboxes_pr, layer_n = correct_bboxes( bboxes, layer_n) # 矫正输出结果 # bboxes_pr, layer_n = get_potatoml(bboxes_pr, layer_n) # 根据输出结果对中大红薯,中大土豆做输出 if len(bboxes_pr) == 0: noresults += 1 # if not os.path.exists(img_dir + "/noresult"): os.mkdir(img_dir + "/noresult") # shutil.move(img_path, img_dir + "/noresult" + "/" + img) else: pre = int(bboxes_pr[0][-1]) # print(pre) # print(clses[pre]) # print(classes_id22[clses[pre]]) if classes_id39[c] in dict( best_bboxes_3).keys(): # food_topn_acc_b+=1 food_top3_acc_nums += 1
return bboxes_pr, layer_n if __name__ == '__main__': start_time = time.time() img_dir = "C:/Users/sunyihuan/Desktop/JPGImages" # 图片文件地址 Y = YoloPredict() end_time0 = time.time() print("model loading time:", end_time0 - start_time) error_c = 0 save_dir = "C:/Users/sunyihuan/Desktop/JPGImages_det" for img in tqdm(os.listdir(img_dir)): # print(img) img_path = img_dir + "/" + img end_time1 = time.time() bboxes_pr, layer_n = Y.result(img_path) end_time2 = time.time() # print("predict time:", end_time2 - end_time1) if len(bboxes_pr) != 0: print(img) bboxes_pr, layer_n = correct_bboxes(bboxes_pr, layer_n) if len(bboxes_pr) != 0: error_c += 1 image = cv2.imread(img_path) image = utils.draw_bbox(image, bboxes_pr) drawed_img_save_to_path = str(img_path).split("/")[-1] drawed_img_save_to_path = save_dir + "/" + drawed_img_save_to_path.split( ".jpg")[0] + "_" + str(layer_n[0]) + ".jpg" # print(drawed_img_save_to_path) cv2.imwrite(drawed_img_save_to_path, image) print(error_c)