数据处理时的相关经验总结
1.如何读取指定路径下的所有图片,并在处理完成后以原文件名保存
#1.设定图片读取所在的文件夹路径与保存路径
img_readpath = 'D:\\material\\dataset'
img_savepath = 'D:\\material\\dataset\\save\\'
#2.取图片的名+后缀名
### 1.jpg
imglist = os.listdir(img_readpath)
### 1
img_name = int(a.split('.')[0])
#3.读取图像
for name in imglist:
image = Image.open(img_readpath+'\\'+name)
draw = ImageDraw.Draw(image)
#4.保存图像并以原图像名命名
img_save = os.path.join(img_savepath+a)
#附:
2. 在图像上绘制点、矩形框和文字
#导入模块
from PIL import Image, ImageDraw,ImageFont
#1.绘制点(x,y)---点的坐标
draw.point((x,y),fill='red')
#2.绘制矩形框--[x1,y1,x2,y2]--代表左上角和右下角的坐标
draw.rectangle([x1,y1,x2,y2],outline='red',width=3)
#3.绘制文本
#3.1导入文本字体
font_path = 'D:\\software\\image\\vscoderexample\\yolov4_pytorch_new\\yolov4-pytorch-master\\model_data\\simhei.ttf'
#3.2加载字体 ImageFont.truetype(file,size, encoding=value)
font_style = ImageFont.truetype(font_path, 20, encoding="utf-8")
#3.3设置写文本的位置
text_origin = np.array([left+1,top+1])
#3.4绘制文本 draw.text(位置,内容,字体格式)
draw.text(text_origin,'chair'+'/'+accuracy,fill='white',font=font_style)
#4.绘制圆 --圆的最小包围框的左上角和右下角的坐标
draw.ellipse((a-2,b-2),(a+2,b+2)),fill='red',width=3)
3.pandas 数据筛选
#筛选出class这一列标签中含有person和chair的所有的行
semantic = semantic[semantic['classes'].isin(['person','chair'])]
#筛选出class这一列标签中含有字符串person的行
semantic = semantic[semantic['classes'].str.contains['person']]
#详细参考链接 https://www.jianshu.com/p/805f20ac6e06
4.pandas数据保存
#如果不想保存的csv数据里包含索引行,可以在保存时设置,header=Flase
semantic.to_csv('semantic_drop.csv',sep=',',header=False)
pandas数据显示
pd.set_option('display.max_rows',None)
pandas如何读入数据不包含索引行
###读入csv后,先转成array,在转成Dataframe
keypoint = pd.DataFrame(np.array(pd.read_csv('displaced_keypoint.csv',sep=',',header=0,index_col=0)))
将数组中的所有元素均除以2
l = [0.68,0.65,1]
length = l/2
print(length)
出现以下报错
修改为:
l = np.array([0.68,0.65,1])
length = l/2
print(length)
参考链接:
(1)https://xiulian.blog.csdn.net/article/details/107464462