900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python调用腾讯优图进行人脸检测分析 并可视化

Python调用腾讯优图进行人脸检测分析 并可视化

时间:2022-04-06 00:04:39

相关推荐

Python调用腾讯优图进行人脸检测分析 并可视化

opexcel.py

import xlrdimport xlwtfrom xlutils.copy import copyclass Operatingexcel():def get_excel_dic(self,filename,sheetname):# filename 文件名# sheetname 表单名# 返回字典格式dic = {}data = xlrd.open_workbook(filename, 'r', encoding_override='utf-8')table = data.sheet_by_name(sheetname)for i in range(1, table.nrows):for y in range(len(table.row_values(0))):if table.row_values(i)[y] != "":dic.setdefault(table.row_values(0)[y], []).append(table.row_values(i)[y])return dicdef get_excel_list(self,filename,sheetname):# filename 文件名# sheetname 表单名# 返回列表格式list = []data = xlrd.open_workbook(filename, 'r', encoding_override='utf-8')table = data.sheet_by_name(sheetname)for y in range(table.nrows):for x in range(len(table.row_values(0))):if table.row_values(y)[x] != "":list.append(table.row_values(y)[x])return listdef set_excel_dic(self,dic,filename,sheet_index,start_r):# filename 文件名# sheet_index第几个工作表格# start_r那一列x = start_rfor k in dic.keys():list = []list.append(k)for v in dic[k]:list.append(v)self.set_excel_list(list,filename,sheet_index,x)x = x + 1def set_excel_list(self,list,filename,sheet_index,start_r):# filename 文件名# sheet_index第几个工作表格# start_r那一列# 读取excel文件r_xls = xlrd.open_workbook(filename)# 将xlrd的对象转化为xlwt的对象excel = copy(r_xls)table = excel.get_sheet(sheet_index)for y in range(len(list)):table.write(y,start_r,str(list[y]))excel.save(filename)

Draw.py

from pyecharts.charts import Piefrom pyecharts import options as optsfrom pyecharts.charts import Lineclass Draw():def drawpie(attr,value,name):list1 = [list(z) for z in zip(attr,value)]# 图表初始化配置init_opts = opts.InitOpts(page_title=name)pie = Pie(init_opts=init_opts)# 标题配置title = opts.TitleOpts(title=name,pos_left='center')# 图例配置legend_opts = opts.LegendOpts(orient="vertical",pos_top="20%",pos_left="15%")# 工具箱配置# feature = opts.ToolBoxFeatureOpts(save_as_image=True, restore=True, data_view=True, data_zoom=True)# 工具箱配置toolbox_opts = opts.ToolboxOpts(orient="vertical",pos_top="25%",pos_right="15%")pie.set_global_opts(title_opts=title,legend_opts=legend_opts,toolbox_opts=toolbox_opts)# 标签配置项pie.add("",list1,radius=[30, 75],center=['50%', '70%'],rosetype="area",label_opts=opts.LabelOpts(position="outside",formatter="{b|{b}: }{c} {per|{d}%} ",background_color="#eee",border_color="#aaa",border_width=1,border_radius=4,rich={"a": {"color": "#999", "lineHeight": 22, "align": "center"},"abg": {"backgroundColor": "#e3e3e3","width": "100%","align": "right","height": 22,"borderRadius": [4, 4, 0, 0],},"hr": {"borderColor": "#aaa","width": "100%","borderWidth": 0.5,"height": 0,},"b": {"fontSize": 16, "lineHeight": 33},"per": {"color": "#eee","backgroundColor": "#334455","padding": [2, 4],"borderRadius": 2,},},),)pie.render('{0}.html'.format(name))# 趋势图def drawline(list1,list4,name):# 图表初始化配置init_opts = opts.InitOpts(page_title=name)line = Line(init_opts=init_opts)# 标题配置title = opts.TitleOpts(title=name,pos_left="10%")# 图例配置legend_opts = opts.LegendOpts(orient="horizontal",pos_top="5%",pos_right="15%")# 工具箱配置# feature = opts.ToolBoxFeatureOpts(save_as_image=True, restore=True, data_view=True, data_zoom=True)# 工具箱配置toolbox_opts = opts.ToolboxOpts(orient="vertical",pos_bottom="15%",pos_left="90%",)line.set_global_opts(title_opts=title,legend_opts=legend_opts,toolbox_opts=toolbox_opts,yaxis_opts=opts.AxisOpts(name="单位:岁",# axislabel_opts=opts.LabelOpts(formatter="{value}例",),xaxis_opts=opts.AxisOpts(name="日期"),datazoom_opts = opts.DataZoomOpts(orient="vertical"),)line.add_xaxis(list4, )line.add_yaxis(name, list1, is_smooth=True, linestyle_opts=opts.LineStyleOpts(color="#E83132", width="4"))line.render('{0}.html'.format(name))

统计人脸.py

"""author:魏振东date:2031func:腾讯优图人脸识别"""import TencentYoutuyunimport osfrom tencent.Draw import Drawfrom opdata.opexcel import Operatingexcel# 输入路径返回有效数据def youtu(image_path):appid = '10151047'secret_id = 'AKID59AA4pi1Sis5GIS2tdCe1b7W2T2asTjr'secret_key = 'N5mMxsiO6zjIk7Kj3DIPPLG4mOvOjvpk'userid = '924271966'end_point = TencentYoutuyun.conf.API_YOUTU_END_POINT # 优图开放平台youtu = TencentYoutuyun.YouTu(appid, secret_id, secret_key, userid, end_point)req = youtu.DetectFace(image_path=image_path, mode=0, data_type=0)return req# 以字典形式返回有效数据,以及所有图片的长度def youtu_face():# 获取所有文件名称imgs = os.listdir("img")dic_face = {}# 分析人脸,并把人脸数据存储到字典中for i in imgs:path = "img/{0}".format(i)req = youtu(path)if req["face"] != [] and req["face"][0] != {}:dic_face.setdefault("人脸", []).append(req)return dic_face["人脸"],len(imgs)# genderInt性别[0/(female)~100(male)]def data_gender(list):female = 0male = 0for i in list:if int(i)>=50:male = male + 1else:female = female + 1return female,male# glassesInt眼镜[0不戴眼镜 1戴眼镜 2戴墨镜] 注:替代原glass(Bool)字段def data_glasses(list):glasses0 = 0glasses1 = 0glasses2 = 0for i in list:if int(i)==0:glasses0 = glasses0 + 1elif int(i)==0:glasses1 = glasses1 + 1else:glasses2 = glasses2 + 1return glasses0,glasses1,glasses2if __name__ == '__main__':d = Drawog = Operatingexcel()dic_face,len_img = youtu_face()""""下载一些图片,包括人像,动物,花朵还有你自己的相片,编程实现识别识别人像,统计人像图片的个数,用饼状图表示占比。"""attr = ['人像', '非人像']value = [len(dic_face), len_img-len(dic_face)]d.drawpie(attr, value,"人像比例")# 因为每次分析数据比较麻烦,所以吧数据保存到excel中# dict = {}# for i in dic_face:#dict.setdefault("性别", []).append(i["face"][0]["gender"])#dict.setdefault("年龄", []).append(i["face"][0]["age"])#dict.setdefault("微笑", []).append(i["face"][0]["expression"])#dict.setdefault("魅力", []).append(i["face"][0]["beauty"])#dict.setdefault("眼镜", []).append(i["face"][0]["glasses"])# print(dict)# 保存到文件中# og.set_excel_dic(dict, "统计信息.xlsx", 0, 0)""""对文件夹中的人像图片,测颜值、是否带帽子、戴眼镜等属性并输出。"""dicc = og.get_excel_dic("统计信息.xlsx", "Sheet1")"""性别比例饼状图"""female,male = data_gender(dicc["性别"])attr = ['female', 'male']value = [female, male]d.drawpie(attr, value,"男女比例饼状图")""""年龄折线图"""l = [str(x) for x in range(len(dicc["年龄"]))]d.drawline(list1=dicc["年龄"],list4=l,name="年龄折线图")"""微笑人数饼图"""female,male = data_gender(dicc["微笑"])attr = ['笑', '不笑']value = [female, male]d.drawpie(attr, value,"微笑人数饼图")"""魅力值折线图"""l = [str(x) for x in range(len(dicc["魅力"]))]d.drawline(list1=dicc["魅力"],list4=l,name="魅力值")""""眼镜饼状图"""glasses0,glasses1,glasses2 = data_glasses(dicc["眼镜"])attr = ['不戴眼镜', '戴眼镜', '戴墨镜']value = [glasses0,glasses1,glasses2]d.drawpie(attr, value,"眼镜饼状图")

/lofxve/youtu

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。