根据json文件中的坐标剪切图像

import numpy as np
import cv2
import os
import json
import xml.etree.cElementTree as ETdef drawxml(xmlpath,im):tree = ET.ElementTree(file=xmlpath)print("resoluting...")root = tree.getroot()for obj in root:if obj.tag == 'object':objectname = obj[0].text  # object namebox = []print('name:' + objectname)for bndbox in obj:for sub in bndbox:box.append(int(sub.text))  # bndboxbox = np.array(box)# print(box)cv2.rectangle(im,(box[0],box[1]),(box[2],box[3]),(0,255,0),2)font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(im,objectname,(box[0],box[1]),font,0.8,(255,255,255),2,cv2.LINE_AA)return imdef drawjson(jsonpath, im):xList=[]yList=[]jsonobj = json.load(open(jsonpath))hats = jsonobj['shapes']for hat in hats:boxes = hat['points']pts = np.array(boxes, np.int32)pts = pts.reshape((-1, 1, 2))# print(pts)objectname = hat['label']print(jsonpath)print(objectname)cv2.polylines(im, [pts], True, (0, 0, 255), 2)font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(im, objectname, (pts[0][0][0], pts[0][0][1]), font, 0.5, (255, 255, 255), 2, cv2.LINE_AA)print(len(pts))xlist=[]ylist=[]for i in range(len(pts)):xlist.append(pts[i][0][0])ylist.append(pts[i][0][1])xList.append(xlist)yList.append(ylist)#print('xList',xList)#print('yList',yList)return im,xList,yList
if __name__ == '__main__':#通过json或xml对原图进行标记需要填写savepath,通过json截取不用填写imgpath = "C:/Users/123/Desktop/3/" #图片路径xmlpath = "C:/Users/123/Desktop/4/"                               #xml路径savepath = ""                              #画图路径(截取不用填写)cutsavepath="C:/Users/123/Desktop/5/" #存放裁剪后的路径jsonpath = ""  #图片对应的json路径imgnum = 0xmlnum = 0jsonnum = 0for f in os.listdir(imgpath):ifdraw = Falseimgnum += 1im = cv2.imread(imgpath + f)origin=cv2.imread(imgpath + f)xmlname = xmlpath + f.replace('.bmp', '.xml')if (xmlpath!='' and os.path.exists(xmlname)):ifdraw = Trueim = drawxml(xmlname, im)xmlnum += 1jsonname = jsonpath + f.replace('.bmp', '.json')if (jsonpath!='' and os.path.exists(jsonname)):ifdraw = Trueim,xList,yList = drawjson(jsonname, im)jsonnum += 1print('xList',xList)print('yList',yList)print(len(xList))for i in range(len(xList)):img_cut=origin[min(yList[i]):max(yList[i]),min(xList[i]):max(xList[i])]print(img_cut)if os.path.exists(cutsavepath+f):cut_img_name=cutsavepath+'cutted-'+ str(i)+'-'+felse: cut_img_name=cutsavepath+fprint(cut_img_name)cv2.imwrite(cut_img_name,img_cut)if ifdraw and savepath!='':cv2.imwrite(savepath + f, im)print("imgnum:", imgnum)print("xmlnum:", xmlnum)print("jsonnum", jsonnum)

根据json文件中的坐标剪切图像相关推荐

  1. 获取json文件中的URL

    1.实例代码为实现获取json文件中的图像: # -*- coding:utf-8 -*- import requests import re import osdef get_page_url(ur ...

  2. js html保存json,如何在json文件中存储jQuery或javascript变量?

    我可以知道有没有机会将jquery变量保存在json文件中?提前致谢.如何在json文件中存储jQuery或javascript变量? 我: var image='/test/test.png'; 我 ...

  3. npm package.json文件中的依赖关系,devDependencies和peerDependencies之间有什么区别?

    本文翻译自:What's the difference between dependencies, devDependencies and peerDependencies in npm packag ...

  4. python读取一个图像_从图像处理python的文件中读取多个图像

    嗨,我有一个脚本来运行图像处理.但是我想用一个循环或者其他方法从一个文件中读取多个图像 例如C:\Users\student\Desktop\Don\program (opencv version)\ ...

  5. json文件中的双引号隐藏

    一.问题起源: 因为看到某个文件的字符串没有双引号也可以加载,就以为json.load加载json中的字符串内容是不需要加双引号的,于是就出现了如下问题: 全选时出没有出现: 加载也报错 二.问题解决 ...

  6. NET问答: 如何在 ASP.NET Core 的 .json 文件中读取 AppSettings ?

    咨询区 Oluwafemi: 在 appsettings.json 中我有如下的 AppSettings 实体数据,如下代码所示: {"AppSettings": {"t ...

  7. php把表单转为json保存,javascript – 使用jquery将表单数据保存到本地json文件中

    我有一个带有一些输入字段的基本表单.我想在提交表单时将表单数据保存到json文件中. json文件中保存数据的格式应如下所示. [ {"title":"some text ...

  8. 【Python 必会技巧】使用 Python 追加写入 json 文件或更改 json 文件中的值

    追加写入 json 文件 有一个 test.json 文件,包含内容如下: {"key_1": "value_1" } 现需要追加写入 json 文件,向其中增 ...

  9. C# 读取根目录的json文件中的某个值

    /// <summary>/// 读取JSON文件/// </summary>/// <param name="key">JSON文件中的key ...

最新文章

  1. JavaEE 6 将包括 JSR330 和 JSR299
  2. 如何搭建modem编译环境
  3. ISA Server 2007 beta TAP 开始招人
  4. 若某文件系统的目录结构如下图所示,假设用户要访问文件 fault.swf ,且当前工作目录为 swshare ,则该文件的全文件名为( ),相对路径和绝对路径分别为( 请在此空作答
  5. 文献记录(part32)--Face spoofing detection under super-realistic 3D wax face attacks
  6. java连接mysql执行ddl_dljd_(007_009)_jdbc执行DQL/DML/DDL语句
  7. 【开卷故意】JAVA正則表達式模版
  8. 清除vlan.dat文件
  9. svn add后的数据如何取消-svn revert??--zz
  10. Introduction to dnorm, pnorm, qnorm, and rnorm for new biostatisticians
  11. 高质量发展-协调发展指标体系构建及测算
  12. 读写锁就是恶霸和良民一起桑拿
  13. 有关计算机知识竞赛的新闻稿,知识竞赛通讯稿5篇
  14. VMWARE虚拟机网络环境配置
  15. H-divergence
  16. color a dir/s_小米手表Color运动版详细评测 比标准版加量减价在哪里?|屏幕|小米手表color|小米手表|小米|续航...
  17. 页面左侧二级菜单20种案例
  18. android onkeydown()简介
  19. 轻松学会linux下查看内存频率,内核函数,cpu频率
  20. 大家都在用HTTP/2了,而你还没听说过?

热门文章

  1. matlab在智能遥控的应用论文,(精品)基于MATLAB的智能控制系统的介绍与设计实例最新毕业论文...
  2. 太牛了!我把阿里、腾讯、字节跳动、美团等Android性能优化实战整合成了一个PDF文档
  3. App Store中开源的 iOS Apps 集合
  4. 物联网毕业设计 单片机室内环境温湿度检测设计与实现
  5. K3 CLOUD服务与费用类物料
  6. Linux下简单创建ThinkPHP 6.0的网站 - 简单前后端 (未完待续)
  7. 鸿蒙互联网开发安卓仍是,【华为|华为鸿蒙手机倒计时,国产软件崛起迎曙光?荣耀:安卓依然是首选( 四 )】操作系统|鸿蒙|其他|曙光|荣耀_科技资讯_联盟·玩科技...
  8. Mac OSX 打开原生自带读写NTFS功能[10.11.6 work, 10.14.4不work]
  9. Hadoop分布式集群安装
  10. 【机器学习】K-Means 聚类是特殊的矩阵分解问题