执行以下代码需要安装opencv库:
参考代码:
"""
目的:将原图片(img)与其xml(xml),合成为打标记的图片(labelled),矩形框标记用红色即可
已有:(1)原图片文件夹(imgs_path),(2)xml文件夹(xmls_path)
step1: 读取(原图片文件夹中的)一张图片
step2: 读取(xmls_path)该图片的xml文件,并获取其矩形框的两个对角顶点的位置
step3: 依据矩形框顶点坐标,在该图片中画出该矩形框
step4: 图片另存为'原文件名'+'_labelled',存在‘lablled’文件夹中
import os
import cv2 as cv
import xml.etree.ElementTree as ET
import numpy as np
# 读取中文路径
# def cv_imread(filePath):
# cv_img = cv.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
# # imdecode读取的是rgb,如果后续需要opencv处理的话,需要转换成bgr,转换后图片颜色会变化
# # cv_img=cv2.cvtColor(cv_img,cv2.COLOR_RGB2BGR)
# return cv_img
def xml_jpg2labelled(imgs_path, xmls_path, labelled_path):
imgs_list = os.listdir(imgs_path)
xmls_list = os.listdir(xmls_path)
nums = len(imgs_list)
print(imgs_list)
print(xmls_list)
for i in range(nums):
img_path = os.path.join(imgs_path, imgs_list[i])
xml_path = os.path.join(xmls_path, xmls_list[i])
img = cv.imread(img_path)
# img = cv.imread(cv_imread(img_path))
# print('img:',img)
labelled = img
# print('img_path:',img_path)
# print('xml_path:',xml_path)
# print('labelled:',labelled)
root = ET.parse(xml_path).getroot()
objects = root.findall('object')
for obj in objects:
bbox = obj.find('bndbox')
xmin = int(float(bbox.find('xmin').text.strip()))
ymin = int(float(bbox.find('ymin').text.strip()))
xmax = int(float(bbox.find('xmax').text.strip()))
ymax = int(float(bbox.find('ymax').text.strip()))
# 标注框的设定, (0, 0, 255)为边界框颜色的设定, 5位边界框的宽度设定
labelled = cv.rectangle(labelled, (xmin, ymin), (xmax, ymax), (0, 0, 255), 5)
# print('labelled_path:', labelled_path)
# print('imgs_list[i]:', imgs_list[i])
# print('%s_labelled.jpg' % (imgs_list[i].split('.')[0]))
# 保存图片
# cv.imwrite('%s%s.jpg' % (labelled_path, imgs_list[i]), labelled)
cv.imwrite('%s/%s_labelled.jpg' % (labelled_path, imgs_list[i].split('.')[0]), labelled)
# cv.imshow('labelled', labelled)
# cv.imshow('origin', origin)
# cv.waitKey()
if __name__ == '__main__':
# 注意文件路径不能出现中文,否则容易出错
imgs_path = 'E:\project\Images'
xmls_path = 'E:\project\Annotations'
labelled_path = 'E:\project\label_images'
xml_jpg2labelled(imgs_path, xmls_path, labelled_path)
参考链接:
https://blog.csdn.net/weixin_40051325/article/details/103891567
本文博主给大家带来一篇 mybatis xml 文件热加载的实现教程,自博主从事开发工作使用 Mybatis 以来,如果需要修改 xml 文件的内容,通常都需要重启项目,因为不重启的话,修改是不生效的,Mybatis 仅仅会在项目初始化的时候将 xml 文件加载进内存。
今天下载了最新的mybatis插件,生成不了XML文件,然后是一堆java注解文件,还有一堆报错。心头各种不爽,网上搜了很久,都是很旧的帖子,根据解决不了问题。最后自己在官网找到了答案,以后大家在搜索找不到答案,还是自己到官网翻文档吧!
MyBatis 的官网generatorConfig说明如下:
http://mybatis.org/generator/configreference/xmlconfig.html
之前使用MyBatis框架或者是在IDEA中,发现Mapper接口和XML文件之间跳转十分的麻烦,我之前经常的操作是在Mapper接口中将接口名称复制一下,然后去查找对应的XML文件,打开后CRTL+F查找对应的xml实现,整个过程效率很低下,搜了搜果然有前辈已经出了一款IDEA的插件解决了这个问题,把这个好用的跳转插件推荐给大家。
最近狮子在搞一个项目,需要用到数据库多表查询,所以在idea创建了一个xml文件,创建完成之后,这个文件居然只被识别位text文件,而且文件内容没有高亮,如图所示: