根据json文件中的坐标剪切图像
根据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文件中的坐标剪切图像相关推荐
- 获取json文件中的URL
1.实例代码为实现获取json文件中的图像: # -*- coding:utf-8 -*- import requests import re import osdef get_page_url(ur ...
- js html保存json,如何在json文件中存储jQuery或javascript变量?
我可以知道有没有机会将jquery变量保存在json文件中?提前致谢.如何在json文件中存储jQuery或javascript变量? 我: var image='/test/test.png'; 我 ...
- npm package.json文件中的依赖关系,devDependencies和peerDependencies之间有什么区别?
本文翻译自:What's the difference between dependencies, devDependencies and peerDependencies in npm packag ...
- python读取一个图像_从图像处理python的文件中读取多个图像
嗨,我有一个脚本来运行图像处理.但是我想用一个循环或者其他方法从一个文件中读取多个图像 例如C:\Users\student\Desktop\Don\program (opencv version)\ ...
- json文件中的双引号隐藏
一.问题起源: 因为看到某个文件的字符串没有双引号也可以加载,就以为json.load加载json中的字符串内容是不需要加双引号的,于是就出现了如下问题: 全选时出没有出现: 加载也报错 二.问题解决 ...
- NET问答: 如何在 ASP.NET Core 的 .json 文件中读取 AppSettings ?
咨询区 Oluwafemi: 在 appsettings.json 中我有如下的 AppSettings 实体数据,如下代码所示: {"AppSettings": {"t ...
- php把表单转为json保存,javascript – 使用jquery将表单数据保存到本地json文件中
我有一个带有一些输入字段的基本表单.我想在提交表单时将表单数据保存到json文件中. json文件中保存数据的格式应如下所示. [ {"title":"some text ...
- 【Python 必会技巧】使用 Python 追加写入 json 文件或更改 json 文件中的值
追加写入 json 文件 有一个 test.json 文件,包含内容如下: {"key_1": "value_1" } 现需要追加写入 json 文件,向其中增 ...
- C# 读取根目录的json文件中的某个值
/// <summary>/// 读取JSON文件/// </summary>/// <param name="key">JSON文件中的key ...
最新文章
- JavaEE 6 将包括 JSR330 和 JSR299
- 如何搭建modem编译环境
- ISA Server 2007 beta TAP 开始招人
- 若某文件系统的目录结构如下图所示,假设用户要访问文件 fault.swf ,且当前工作目录为 swshare ,则该文件的全文件名为( ),相对路径和绝对路径分别为( 请在此空作答
- 文献记录(part32)--Face spoofing detection under super-realistic 3D wax face attacks
- java连接mysql执行ddl_dljd_(007_009)_jdbc执行DQL/DML/DDL语句
- 【开卷故意】JAVA正則表達式模版
- 清除vlan.dat文件
- svn add后的数据如何取消-svn revert??--zz
- Introduction to dnorm, pnorm, qnorm, and rnorm for new biostatisticians
- 高质量发展-协调发展指标体系构建及测算
- 读写锁就是恶霸和良民一起桑拿
- 有关计算机知识竞赛的新闻稿,知识竞赛通讯稿5篇
- VMWARE虚拟机网络环境配置
- H-divergence
- color a dir/s_小米手表Color运动版详细评测 比标准版加量减价在哪里?|屏幕|小米手表color|小米手表|小米|续航...
- 页面左侧二级菜单20种案例
- android onkeydown()简介
- 轻松学会linux下查看内存频率,内核函数,cpu频率
- 大家都在用HTTP/2了,而你还没听说过?
热门文章
- matlab在智能遥控的应用论文,(精品)基于MATLAB的智能控制系统的介绍与设计实例最新毕业论文...
- 太牛了!我把阿里、腾讯、字节跳动、美团等Android性能优化实战整合成了一个PDF文档
- App Store中开源的 iOS Apps 集合
- 物联网毕业设计 单片机室内环境温湿度检测设计与实现
- K3 CLOUD服务与费用类物料
- Linux下简单创建ThinkPHP 6.0的网站 - 简单前后端 (未完待续)
- 鸿蒙互联网开发安卓仍是,【华为|华为鸿蒙手机倒计时,国产软件崛起迎曙光?荣耀:安卓依然是首选( 四 )】操作系统|鸿蒙|其他|曙光|荣耀_科技资讯_联盟·玩科技...
- Mac OSX 打开原生自带读写NTFS功能[10.11.6 work, 10.14.4不work]
- Hadoop分布式集群安装
- 【机器学习】K-Means 聚类是特殊的矩阵分解问题