您现在的位置是:网站首页> 编程资料编程资料
python用opencv将标注提取画框到对应的图像中_python_
2023-05-25
342人已围观
简介 python用opencv将标注提取画框到对应的图像中_python_
前言
问题需求:
拥有两个文件夹,一个保存图片image,一个保存标签文件,要求把标签文件中的标注提取出来,并在图片中画出来
相应的思路
- 首先提出各个文件的路径;
- 然后将解析json文件,将其中的标注文件提取,并将对应的图像读取在图像上将对应的框画出来;由于图像以及标签的文件前缀都是一样的,所以只要一个前缀列表提取出来,然后将图像的路径与其进行拼接(图像路径+前缀+.jpeg)就可以读取对应的图像,而写入的图像也是一样(写入图像路径+前缀+.jpeg),标签文件也是一样(标签路径+前缀+.json)
读取前缀列表
- 通过
os.walk()迭代读取文件夹以及相应的文件列表 - 通过
os.listdir直接读取文件夹下的文件列表
# 通过os.walk()读取文件夹以及相应的文件列表 def get_file_list(path): file_list=[] for dir_list,folder,file in os.walk(path): file_list=file return file_list #通过os.listdir()读取文件夹下的文件列表 def get_file_list2(path): file_list=os.listdir(path) return file_list file_list=get_file_list2(r"E:\temp\AI\label") print(file_list)

找出json结构中对应框坐标位置,画出对应的框
查看json文件结构,对应找到坐标所在的位置:
- 可以看到json文件中坐标是在shapes对应的points里的列表,而且是列表第0项表示左上位置,而第一项表示右上位置,所以在cv2的画框的两个参数参数pt1和pt2就定下来
cv2.rectangle(img, pt1, pt2, color, thickness=None )
{ "version": "3.16.5", "flags": {}, "shapes": [ { "label": "0", "line_color": null, "fill_color": null, "points": [ [ 2720.0, 1094.0 ], [ 2768.0, 1158.0 ] ], "shape_type": "rectangle", "flags": {} } ], ... }那么代码就如下所示:
import json import cv2 path_label=r"E:\temp\AI\label" path_img=r"E:\temp\AI\image" path_result=r"E:\temp\AI\result" # 通过遍历将图像纷纷画框 for file in file_list: txt=open(os.path.join(path_label,file)) load_json=json.load(txt) for shape in load_json["shapes"]: left_top=(int(shape["points"][0][0]),int(shape["points"][0][1])) right_bottom=(int(shape["points"][1][0]),int(shape["points"][1][1])) #对象进行画框 img_name=file.split(".")[0]+".jpeg" img=cv2.imread(os.path.join(os.path.join(path_img,img_name))) cv2.rectangle(img, left_top,right_bottom, (0, 255, 0), 2) cv2.imwrite(os.path.join(path_result,img_name), img)
比如其中一个图像的一个缺陷位置就被标注出来
到此这篇关于python用opencv将标注提取画框到对应的图像中的文章就介绍到这了,更多相关python opencv标注提取内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- Python基础之类的定义和使用详解_python_
- Python 变量教程私有变量详解_python_
- Python 变量教程字节对象与字符串_python_
- Pandas操作MySQL的方法详解_python_
- Python中使用matplotlib模块errorbar函数绘制误差棒图实例代码_python_
- Python np.where()的详解以及代码应用_python_
- python包合集shutil示例代码详解_python_
- 利用Python实现获取照片位置信息_python_
- pandas重复行删除操作df.drop_duplicates和df.duplicated的区别_python_
- Pandas读存JSON数据操作示例详解_python_
