Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #4
0
    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)