python用opencv将标注提取画框到对应的图像中

 更新时间:2022年08月23日 10:03:28   作者:徽先生  
这篇文章主要介绍了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)

比如其中一个图像的一个缺陷位置就被标注出来

到此这篇关于python用opencv将标注提取画框到对应的图像中的文章就介绍到这了,更多相关python opencv标注提取内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python的SimpleHTTPServer模块用处及使用方法简介

    Python的SimpleHTTPServer模块用处及使用方法简介

    这篇文章主要介绍了Python的SimpleHTTPServer模块用处及使用方法简介,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python的装饰器详情介绍

    Python的装饰器详情介绍

    这篇文章主要介绍了Python的装饰器详情,主要介绍装饰器定以、调用方式等相关内容,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-03-03
  • Python3使用PyQt5制作简单的画板/手写板实例

    Python3使用PyQt5制作简单的画板/手写板实例

    下面小编就为大家带来一篇Python3使用PyQt5制作简单的画板/手写板实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 一文秒懂python读写csv xml json文件各种骚操作

    一文秒懂python读写csv xml json文件各种骚操作

    多年来,数据存储的可能格式显著增加,但是,在日常使用中,还是以 CSV 、 JSON 和 XML 占主导地位。 在本文中,我将与你分享在Python中使用这三种流行数据格式及其之间相互转换的最简单方法,需要的朋友可以参考下
    2019-07-07
  • Django 按组控制权限类及定义方法详解

    Django 按组控制权限类及定义方法详解

    这篇文章主要为大家介绍了Django 按组控制权限类及定义方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • python密码学RSA密码解密教程

    python密码学RSA密码解密教程

    这篇文章主要为大家介绍了python密码学RSA密码解密教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 浅谈Python中(&,|)和(and,or)之间的区别

    浅谈Python中(&,|)和(and,or)之间的区别

    这篇文章主要介绍了浅谈Python中(&,|)和(and,or)之间的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 用Python实现童年贪吃蛇小游戏功能的实例代码

    用Python实现童年贪吃蛇小游戏功能的实例代码

    这篇文章主要介绍了用Python实现童年贪吃蛇小游戏功能的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Python 制作词云的WordCloud参数用法说明

    Python 制作词云的WordCloud参数用法说明

    这篇文章主要介绍了Python 制作词云的WordCloud参数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • pandas ix &iloc &loc的区别

    pandas ix &iloc &loc的区别

    这篇文章主要介绍了pandas ix &iloc &loc的区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01

最新评论