python用opencv将标注提取画框到对应的图像中
作者:徽先生 时间:2023-01-18 21:10:16
前言
问题需求:
拥有两个文件夹,一个保存图片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)
比如其中一个图像的一个缺陷位置就被标注出来
来源:https://blog.csdn.net/weixin_42295969/article/details/126414920
标签:python,opencv,标注,提取,画框
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Mysql主从数据库(Master/Slave)同步配置与常见错误
2024-01-21 17:48:35
![](https://img.aspxhome.com/file/2023/1/115271_0s.png)
Django如何实现网站注册用户邮箱验证功能
2023-05-14 08:03:08
![](https://img.aspxhome.com/file/2023/9/94049_0s.png)
Python正则表达式匹配数字和小数的方法
2021-07-16 21:29:17
![](https://img.aspxhome.com/file/2023/5/89355_0s.png)
PHP getNamespaces()函数讲解
2023-06-11 07:32:45
![](https://img.aspxhome.com/file/2023/7/55407_0s.png)
Spring数据库多数据源路由配置过程图解
2024-01-26 11:23:55
![](https://img.aspxhome.com/file/2023/6/70356_0s.png)
小谈MySQL字符集
2009-02-13 13:30:00
python flask实现分页效果
2022-07-18 06:19:22
![](https://img.aspxhome.com/file/2023/6/103526_0s.png)
通过Fckeditor把图片上传到独立图片服务器的方法
2023-11-06 20:02:24
Python 从subprocess运行的子进程中实时获取输出的例子
2023-12-24 18:31:10
win10上如何安装mysql5.7.16(解压缩版)
2024-01-23 23:22:53
![](https://img.aspxhome.com/file/2023/2/69862_0s.png)
未知高度的图片垂直居中
2010-12-17 12:36:00
![](https://img.aspxhome.com/file/UploadPic/201012/17/01-22s.jpg)
Python解析nginx日志文件
2023-09-07 18:22:09
python 判断参数为Nonetype类型或空的实例
2021-03-21 07:15:17
初探TensorFLow从文件读取图片的四种方式
2021-08-06 06:04:34
让sql2005运行在独立用户下出现 WMI 提供程序错误的解决方式
2024-01-13 13:12:50
常用一些Javascript判断函数
2024-05-05 09:23:12
多个datatable共存造成多个表格的checkbox都被选中
2024-05-11 09:18:42
好的产品设计并非始于图片,而是对人的理解
2009-08-02 20:25:00
mssql2005字符串连接方法 避免无效的连接错误
2024-01-14 20:45:05
CSS背景属性5个应用实例
2009-09-13 20:54:00