python用opencv将标注提取画框到对应的图像中
作者:徽先生 发布时间:2023-01-18 21:10:16
标签:python,opencv,标注,提取,画框
前言
问题需求:
拥有两个文件夹,一个保存图片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
0
投稿
猜你喜欢
- 递归查询对于同一个表父子关系的计算提供了很大的方便,这个示例使用了SQL server 2005中的递归查询,使用的表是CarParts,这
- 目录1. 首先2. 编程惯用法3. 基础用法4. 库的使用5. 设计模式6. 内部机制7. 使用工具辅助项目开发8. 性能剖析与优化1. 首
- 下面的request.servervariables例子都是服务器探针采用的asp代码本机ip:<%=request.serverva
- 1.MySQL中并发和隔离控制机制Meta-data元数据锁:在table cache缓存里实现的,为DDL(Data Definition
- 本来在网上有不少关于这方面的文章,可是我找了好久也没看到把(可能我的搜索水平有线把)不过倒是聊天室的很多。如何统计会员再线状态,希望对刚开始
- 本文实例讲述了Python实现扩展内置类型的方法。分享给大家供大家参考,具体如下:简介除了实现新的类型的对象方式外,有时我们也可以通过扩展P
- 导语大家以前应该都听说过一个游戏:叫做走四棋儿这款游戏出来到现在时间挺长了,小时候的家乡农村条件有限,附近也没有正式的玩具店能买到玩具,因此
- 当然是可以的,而且非常简单,今天就教大家在ASP中不用模板生成HTML静态页的方法。这里假设有一个htmer.asp动态页面,你想把它生成为
- JS获取多选框checkbox被选中的个数。var checkbox = document.getElementsByName("
- 一、使用sklearn转换器处理sklearn提供了model_selection模型选择模块、preprocessing数据预处理模块、d
- JS调试技巧技巧一:格式化压缩代码 技巧二:快速跳转到某个断点的位置右侧的Breakpoints会汇总你在JS文件所有打过的断点,点击跟ch
- 基础代码pred_y = test_output.data.numpy()pred_y = pred_y.flatten()print(pr
- 这篇文章主要为大家详细介绍了python编写实现抽奖器,文中代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下# codi
- tensorflow里面给出了一个函数用来读取图像,不过得到的结果是最原始的图像,是咩有经过解码的图像,这个函数为tf.gfile.Fast
- 本文实例讲述了PHP使用自定义key实现对数据加密解密的方法。分享给大家供大家参考,具体如下:客户端和服务端通信时,有个场景很常见,通过一个
- 我们进行CSS网页布局的时候,都知道它需要符合XHTML1.0规范。如果我们在进行CSS网页布局的时候,还在使用被W3C废弃的元素,那就失去
- 一个客户提供一个股价的信息,要求放在页面上,显示一些数据,需要从远程获取xml,然后解析写在网页上,开始不会觉得很难,其实蛮简单的,先用ja
- 安装python-alipay-sdkpip install python-alipay-sdk --upgrade配置视图函数orders
- 简介集合对象 set 是由具有唯一性的可哈希对象组成的无序多项集,如 list 不能哈希因此,不能作为 set 的一项。set 的常见用途包
- 问题:由于自己做项目的时候,需要循环的绘制数据,假设有100个样本,每个样本包含两个坐标点(A, B),我需要对这两个点标上不同的颜色,同时