做淘宝还有必要做网站吗,学院网站建设工作总结,拆分盘的网站开发费用,什么是网站版面布局文章目录 背景代码 背景
如果我们想要根据json标注文件#xff0c;获取里面的指定目标的裁剪区域#xff0c;那么我们可以根据以下代码来实现#xff08;也可以校验标注情况#xff09;。
代码
from tqdm import tqdm
import os, json, cv2, copy
import numpy as npdef… 文章目录 背景代码 背景
如果我们想要根据json标注文件获取里面的指定目标的裁剪区域那么我们可以根据以下代码来实现也可以校验标注情况。
代码
from tqdm import tqdm
import os, json, cv2, copy
import numpy as npdef get_all_images(path, flags):result_list, filenames [], []for root, dirs, files in os.walk(path):for file in files:filename, file_extension os.path.splitext(file)if file_extension.lower() in flags:result_list.append(os.path.join(root, file))filenames.append(file)return result_list, filenamesdef get_labelme_info(label_file, target):anno json.load(open(label_file, r, encodingutf-8))shapes anno[shapes]image_path os.path.basename(anno[imagePath])labels []boxes []for s in shapes:pts s[points]x1, y1 pts[0]x2, y2 pts[1]label s[label]if label in target:labels.append(label)boxes.append([x1, y1, x2, y2])return image_path, boxes, labelsdef plot_one_ori(image, boxs, label, color, mask_alpha0.4):[x1, y1, x2, y2] boxsmask_img copy.deepcopy(image) # 1ori_img copy.deepcopy(mask_img) # 1cropped_image ori_img[y1:y2, x1:x2]img_height, img_width image.shape[:2]size min([img_height, img_width]) * 0.0006text_thickness int(min([img_height, img_width]) * 0.001)cv2.rectangle(image, (x1, y1), (x2, y2), color, 3)caption f{原标签-}{label}(tw, th), _ cv2.getTextSize(textcaption, fontFacecv2.FONT_HERSHEY_SIMPLEX,fontScalesize, thicknesstext_thickness)th int(th * 1.2)cv2.rectangle(image, (x1, y2),(x1 tw, y2 th), color, -1)cv2.rectangle(mask_img, (x1, y2),(x1 tw, y2 th), color, -1)cv2.putText(image, caption, (x1, y2 th), cv2.FONT_HERSHEY_SIMPLEX, size, (255, 255, 255), text_thickness, cv2.LINE_AA)cv2.putText(mask_img, caption, (x1, y2 th), cv2.FONT_HERSHEY_SIMPLEX, size, (255, 255, 255), text_thickness, cv2.LINE_AA)image cv2.addWeighted(mask_img, mask_alpha, image, 1 - mask_alpha, 0)return image, cropped_imagedef cv_imread(filePath):cv_img cv2.imdecode(np.fromfile(filePath, dtypenp.uint8), flagscv2.IMREAD_COLOR)return cv_imgif __name__ __main__:img_folder r\\DSJ_NAS_90******* # 原图和JSON文件位置save_target_path r\\DSJ_NA************ # 保存位置target [red_face] # 获取指定目标可传多个os.makedirs(save_target_path, exist_okTrue)img_list, filenames get_all_images(img_folder, flags[.jpg, .png, .jpeg])print(filenames)for filename in filenames:fn, file_extension os.path.splitext(filename)image_path os.path.join(img_folder, filename) # 图片名json_path os.path.join(img_folder, {}.json.format(fn)) # 标签文件名save_path os.path.join(save_target_path, {}.jpg.format(fn))_, ori_boxes, ori_labels get_labelme_info(json_path, target)for box, label in zip(ori_boxes, ori_labels):x1, y1, x2, y2 list(map(int, box))image cv_imread(image_path)image, crop_image plot_one_ori(image, [x1, y1, x2, y2], label, color(0,0,255))# cv2.imshow(1,crop_image)# cv2.waitKey(1)cv2.imencode(.jpg, crop_image)[1].tofile(save_path)