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

目录
  • 前言
  • 相应的思路
  • 读取前缀列表
  • 找出json结构中对应框坐标位置,画出对应的框

前言

问题需求:

拥有两个文件夹,一个保存图片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标注提取内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python OpenCV 图像矫正的原理实现

    目录 题目描述 基本思路 核心代码 题目描述 目录hw1下的图像是一些胶片的照片,请将其进行度量矫正. 推荐流程:采用Canny算子,检测边缘点:采用Hough直线检测,根据边缘点检测胶片边缘对应的4条直线:4条直线在图像平面中的交点为胶片图像的4个顶点.根据4个顶点与真实世界中胶片的位置(假设胶片图像长宽比为4:3),得到两个平面之间的单应变换矩阵,并根据单应变换矩阵实现图像矫正. 基本思路 使用Canny算子,检测边缘点:以边缘点作为输入,采用Hough直线检测,检测出最多点共线的四条直线,

  • Python使用OPENCV的目标跟踪算法实现自动视频标注效果

    先上效果 1.首先,要使用opencv的目标跟踪算法,必须要有opencv环境 使用:opencv==4.4.0 和 opencv-contrib-python==4.4.0.46,lxml   这三个环境包. 也可以使用以下方法进行下载 : pip install opencv-python==4.4.0 pip install opencv-contrib-python==4.4.0.4 pip install lxml 2.使用方法: (1):英文状态下的 "s" 是进行标注 (

  • Python OpenCV Canny边缘检测算法的原理实现详解

    目录 Gaussian smoothing Computing the gradient magnitude and orientation Non-maxima suppression Hysteresis thresholding OpenCV实现 Gaussian smoothing 总的来说,Canny边缘检测可以分为四个步骤: 由于边缘检测对噪声敏感,因此对图像应用高斯平滑以帮助减少噪声.具体做法是,采用一个5*5的高斯平滑滤波器对图像进行滤波处理. Computing the gra

  • Python OpenCV中的drawMatches()关键匹配绘制方法

    目录 作用说明 函数原型 参数详解 结果 作用说明 该方法被用于绘制关键点的匹配情况.我们看到的许多匹配结果都是使用这一方法绘制的——一左一右两张图像,匹配的关键点之间用线条链接. 函数原型 cv.drawMatches( img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg cv.drawMatche

  • 三分钟教会你用Python+OpenCV批量裁剪xml格式标注的图片

    目录 前言 xml文件格式 代码思想 完整代码 效果展示 总结 前言 在目标检测中,数据集常常使用labelimg标注,会生成xml文件.本文旨在根据xml标注文件来裁剪目标,以达到去除背景信息的目的. xml文件格式 以下是一个标注好的图片生成的xml文件.具体含义见代码注释. <annotation> <!--xml所属文件夹--> <folder>JPEGImages</folder> <!--对应图片所属文件夹--> <filena

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

    目录 前言 相应的思路 读取前缀列表 找出json结构中对应框坐标位置,画出对应的框 前言 问题需求: 拥有两个文件夹,一个保存图片image,一个保存标签文件,要求把标签文件中的标注提取出来,并在图片中画出来 相应的思路 首先提出各个文件的路径: 然后将解析json文件,将其中的标注文件提取,并将对应的图像读取在图像上将对应的框画出来:由于图像以及标签的文件前缀都是一样的,所以只要一个前缀列表提取出来,然后将图像的路径与其进行拼接(图像路径+前缀+.jpeg)就可以读取对应的图像,而写入的图像

  • Python OpenCV基于霍夫圈变换算法检测图像中的圆形

    目录 第一章:霍夫变换检测圆 ① 实例演示1 ② 实例演示2 ③ 霍夫变换函数解析 第二章:Python + opencv 完整检测代码 ① 源代码 ② 运行效果图 第一章:霍夫变换检测圆 ① 实例演示1 这个是设定半径范围 0-50 后的效果. ② 实例演示2 这个是设定半径范围 50-70 后的效果,因为原图稍微大一点,半径也大了一些. ③ 霍夫变换函数解析 cv.HoughCircles() 方法 参数分别为:image.method.dp.minDist.param1.param2.mi

  • 利用Python和OpenCV库将URL转换为OpenCV格式的方法

    今天的博客是直接来源于我自己的个人工具函数库. 过去几个月,有些PyImageSearch读者电邮问我:"如何获取URL指向的图片并将其转换成OpenCV格式(不用将其写入磁盘再读回)".这篇文章我将展示一下怎么实现这个功能. 额外的,我们也会看到如何利用scikit-image从URL下载一幅图像.当然前行之路也会有一个常见的错误,它可能让你跌个跟头. 继续往下阅读,学习如何利用利用Python和OpenCV将URL转换为图像 方法1:OpenCV.NumPy.urllib 第一个方

  • python中的opencv 图像分割与提取

    目录 图像分割与提取 用分水岭算法实现图像分割与提取 算法原理 相关函数介绍 分水岭算法图像分割实例 交互式前景提取 图像分割与提取 图像中将前景对象作为目标图像分割或者提取出来.对背景本身并无兴趣分水岭算法及GrabCut算法对图像进行分割及提取. 用分水岭算法实现图像分割与提取 分水岭算法将图像形象地比喻为地理学上的地形表面,实现图像分割,该算法非常有效. 算法原理 任何一幅灰度图像,都可以被看作是地理学上的地形表面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷. 左图是原

  • python opencv人脸检测提取及保存方法

    注意这里提取到的人脸图片的保存地址要改成自己要保存的地址 opencv人脸的检测模型的路径也要更改为自己安装的opencv的人脸检测模型的路径 import cv2 save_path = 'F:\\face_photo_save\\chenym\\' cascade = cv2.CascadeClassifier("D:\\opencv249\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt_tree.xml&q

  • python用opencv完成图像分割并进行目标物的提取

    运行平台: Windows Python版本: Python3.x IDE: Spyder 今天我们想实现的功能是对单个目标图片的提取如图所示: 图片读取 ###############头文件 import matplotlib.pyplot as plt import os import cv2 import numpy as np from PIL import Image #from skimage import io import random from PIL import Image

  • python基于Opencv实现人脸口罩检测

    一.开发环境 python 3.6.6 opencv-python 4.5.1 二.设计要求 1.使用opencv-python对人脸口罩进行检测 三.设计原理 设计流程图如图3-1所示, 图3-1 口罩检测流程图 首先进行图片的读取,使用opencv的haar鼻子特征分类器,如果检测到鼻子,则证明没有戴口罩.如果检测到鼻子,接着使用opencv的haar眼睛特征分类器,如果没有检测到眼睛,则结束.如果检测到眼睛,则把RGB颜色空间转为HSV颜色空间.进行口罩区域的检测.口罩区域检测流程是首先把

  • Python通过OpenCV的findContours获取轮廓并切割实例

    1 获取轮廓 OpenCV2获取轮廓主要是用cv2.findContours import numpy as np import cv2 im = cv2.imread('test.jpg') imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) ret,thresh = cv2.threshold(imgray,127,255,0) image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_T

  • python数字图像处理之骨架提取与分水岭算法

    骨架提取与分水岭算法也属于形态学处理范畴,都放在morphology子模块内. 1.骨架提取 骨架提取,也叫二值图像细化.这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示. morphology子模块提供了两个函数用于骨架提取,分别是Skeletonize()函数和medial_axis()函数.我们先来看Skeletonize()函数. 格式为:skimage.morphology.skeletonize(image) 输入和输出都是一幅二值图像. 例1: from s

随机推荐