资源简介
两个程序,一个程序从 xml 文件中批量获取标注目标的宽与高,另一个为 K-means 维度聚类程序(可视化绘图)

代码片段和文件信息
# -*- coding:utf-8 -*-
import os
import xml.etree.ElementTree as ET
import numpy as np
np.set_printoptions(suppress=True threshold=np.nan)
import matplotlib
from PIL import Image
def parse_obj(xml_path filename):
tree=ET.parse(xml_path+filename)
objects=[]
for obj in tree.findall(‘object‘):
obj_struct={}
obj_struct[‘name‘]=obj.find(‘name‘).text
bbox=obj.find(‘bndbox‘)
obj_struct[‘bbox‘]=[int(bbox.find(‘xmin‘).text)
int(bbox.find(‘ymin‘).text)
int(bbox.find(‘xmax‘).text)
int(bbox.find(‘ymax‘).text)]
objects.append(obj_struct)
return objects
def read_image(image_path filename):
im=Image.open(image_path+filename)
W=im.size[0]
H=im.size[1]
area=W*H
im_info=[WHarea]
return im_info
if __name__ == ‘__main__‘:
image_path=‘./JPEGImages/‘
xml_path=‘./Annotations/‘
filenamess=os.listdir(xml_path)
filenames=[]
for name in filenamess:
name=name.replace(‘.xml‘‘‘)
filenames.append(name)
# print(filenames)
recs={}
ims_info={}
obs_shape={}
classnames=[]
num_objs={}
obj_avg={}
for iname in enumerate(filenames):
# print(‘正在处理 {}.xml ‘.format(name))
recs[name]=parse_obj(xml_path name+ ‘.xml‘ )
# print(‘正在处理 {}.jpg ‘.format(name))
ims_info[name]=read_image(image_path name + ‘.jpg‘ )
# print(‘所有信息收集完毕。‘)
# print(‘正在处理信息......‘)
for name in filenames:
im_w = ims_info[name][0]
im_h = ims_info[name][1]
im_area = ims_info[name][2]
for object in recs[name]:
if object[‘name‘] not in num_objs.keys():
num_objs[object[‘name‘]]=1
else:
num_objs[object[‘name‘]]+=1
#num_objs+=1
ob_w = object[‘bbox‘][2] - object[‘bbox‘][0]
ob_h = object[‘bbox‘][3] - object[‘bbox‘][1]
print(ob_h)
ob_area = ob_w*ob_h
w_rate= ob_w / im_w
h_rate= ob_h / im_h
area_rate= ob_area / im_area
if not object[‘name‘] in obs_shape.keys():
obs_shape[object[‘name‘]]=( [[ob_w
ob_h
ob_area
w_rate
h_rate
area_rate]] )
else:
obs_shape[object[‘name‘]].append( [ob_w
ob_h
ob_area
w_rate
h_rate
area_rate] )
if object[‘name‘] not in classnames:
classnames.append(object[‘name‘])#求平均
for name in classnames:
obj_avg[name]=(np.array(obs_shape[name]).sum(axis=0))/num_objs[name]
# print(‘{}的情况如下:*******\n‘.format(name))
# print(‘ 目标平均W={}‘.format(obj_avg[name][0]))
# print(‘ 目标平均H={}‘.format(obj_avg[name][1]))
# print(‘ 目标平均area={}‘.format(obj_avg[name][2]))
#
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4325 2019-02-24 04:01 Caffe-SSD的K-means宽高比聚类\K-means.py
文件 3516 2019-02-24 03:53 Caffe-SSD的K-means宽高比聚类\get_w_h.py
目录 0 2019-02-25 09:18 Caffe-SSD的K-means宽高比聚类\
- 上一篇:拟牛顿法程序
- 下一篇:Faster_RCNN绘制P-R曲线、检测视频
相关资源
- 基于k-means聚类的财务欺诈类型分类
- K-means算法论文
- PCA-KDKM算法及其在微博舆情中的应用
- 1种新的散乱点云快速去噪算法
- LBG算法K-means
- K-Means++ 算法
- ISODATA及K-means聚类算法
- 卢浮宫博物馆人员疏散模型
- K-Means图像分割算法实现
- K-means.rar
- k-means++ the advantages of careful seeding
- Data clustering-50 years beyond K-means
- K-Means 算法demo
- 基于K-Means算法的雷达信号与分选方法
- k-means算法代码
- BOWBag of words,词袋模型代码实现
- VGG_VOC0712_SSD_300x300_iter_120000.caffemodel
- caffe-SSD网络预训练模型
- 基于 K-means 聚类算法的图像区域分割
- 数据集bank.arff
- 各种聚类程序,包括生成聚类树、k
- k-means数据
- 基于特征选择的K-means聚类异常检测方
- K-means聚类数据.rar
- k-means优化算法
- 中文文本预处理;k-means聚类
- kemans聚类用的数据--包含多个数据
- 机器学习-K-MEANS聚类
- 基于K-means聚类的图像分割
- k-means算法二维坐标数据
评论
共有 条评论