可能女生或者摄影爱好者会很喜欢本期的实验,通过调用华为云的图像标签,对相册进行一个整理分类,不需要我们再一张一张去手动分类,像有几千张几万张图片,手动分类下来,人都麻了~-~


不啰嗦太多,直接代码进入正题,不知道怎么调用华为云的请看华为云注册登录之图像标签识别

数据在这里下载哦,只需1积分!!!数据包

一、图像标签服务初始化

1. 引入相关的库和调用相关的包

# 调用包从图像识别包中调用,图像标签,工具包
from image_sdk.utils import encode_to_base64
from image_sdk.image_tagging import image_tagging_aksk
from image_sdk.utils import init_global_env# 调用json解析传回的结果
import json
# 操作系统文件/文件夹的包
import os
import shutil# 图像处理展示相关的包
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

2. 设置AK/SK(不懂怎么设置的参考华为云注册那篇文,上面附上链接啦)

init_global_env('cn-north-4')# 准备ak,sk
app_key = '***'  #不要使用***,一定要改为你自己的AK
app_secret = '***' #不要使用***,一定要改为你自己的SK

3. 使用网络图像测试

# 使用网络图像测试
demo_data_url = 'https://img2.baidu.com/it/u=766249321,3457443746&fm=26&fmt=auto' #单引号里的地址可以自己修改为自己想要使用的图片
# call interface use the url
result = image_tagging_aksk(app_key, app_secret, '', demo_data_url, 'zh', 5, 30)# 转化成Python字典形式
tags = json.loads(result)
print(tags)

输出:

我使用的图片来源于网络素材,如下:

可以尝试百度找一张图片,右键复制图片地址,放到上面代码单引号处进行替换,看看结果是否和你预测的一致

二、利用标签打标相关的照片

1. 打标一张照片

# 确定电子相册位置
file_path ='data/'
file_name = 'pic_super.png'# 保存图片标签的字典
labels={}# 图像打标
result = image_tagging_aksk(app_key, app_secret, encode_to_base64(file_path + file_name), '', 'zh', 5, 60)
# 解析结果
result_dic = json.loads(result)
# 保存到字典中
labels[file_name] = result_dic['result']['tags']
print(labels)

输出:


注:我使用的编译软件是Jupyter book,这个编译器带不动那么多照片,我试了很多次才发现的,所以我接下来把数据包里data文件夹下的照片删除只剩下三张,如果大家用的是pycharm是可以带动很多图片,就不需要删除。

如果不删除,接下来的操作会一直出现这样一个连接超时的报错


2. 打标data文件夹下的所有照片

# 确定电子相册位置
file_path ='data/'
# 保存图片标签的字典
labels = {}items = os.listdir(file_path)
for i in items:# 判断是否为文件,而不是文件夹if os.path.isfile:# 华为云EI目前支持JPG/PNG/BMP格式的图片if i.endswith('jpg') or i.endswith('jpeg') or i.endswith('bmp') or i.endswith('png'):# 为图片打上标签result = image_tagging_aksk(app_key, app_secret, encode_to_base64(file_path + i), '', 'zh', 5, 60)# 解析返回的结果result_dic = json.loads(result)# 将文件名与图片对齐labels[i] = result_dic['result']['tags']# 显示结果
print(labels)

输出:

3. 保存打标结果

#将标签字典保存到文件
save_path = './label'
# 如果文件夹不存在则创建文件
if not os.path.exists(save_path):os.mkdir(save_path)# 创建文件,执行写入操作,并关闭
with open(save_path + '/labels.json', 'w+') as f:f.write(json.dumps(labels))

可以看到出现一个label文件夹

三、利用打标结果制作动态相册

1. 重新打开保存的标注结果

# 打开刚刚保存的文件
label_path = 'label/labels.json'
with open(label_path,'r') as f:labels = json.load(f)

2. 利用关键字进行搜索(我使用了“花”做例子)

# 搜索关键词
key_word = input('请输入搜索词')
# 设置可信百分比
threshold = 60
# 设置一个集合(集合内只存在唯一的元素)
valid_list = set()# 遍历labels中的字典获取所有包含关键字的图片名字
for k,v in labels.items():for item in v:if key_word in item['tag'] and float(item['confidence']) >= threshold:valid_list.add(k)# 展示结果
valid_list = list(valid_list)
print(valid_list)

输出:

3. 展示相关图片

# 设置画布大小
plt.figure(24)# 将每张图片依次排列到画布上
for k,v in enumerate(valid_list[:9]):pic_path = 'data/' + vimg = Image.open(pic_path)img = img.resize((640,400))plt.subplot(331 + k)plt.axis('off')plt.imshow(img)plt.show()

输出:

4. 制作gif图片

# 生成一个临时文件夹
if not os.path.exists('tmp'):os.mkdir('tmp')# 将所有搜索到的图像转化为gif格式,并存储在临时文件夹中
gif_list = []
for k, pic in enumerate(valid_list):pic_path = 'data/' + picimg = Image.open(pic_path)img = img.resize((640,380))save_name = 'tmp/'+ str(k) + '.gif'img.save(save_name)gif_list.append(save_name)# 打开已经所有静止的gif图片
images=[]
for i in gif_list:pic_path =  iimages.append(Image.open(pic_path))# 存储成动图gif
images[0].save('相册动图.gif',save_all=True,append_images=images[1:],duration=1000,loop=0)# 释放内存
del images
# 删除临时文件夹
shutil.rmtree('tmp')print('gif相册制作完成')

输出:

四、利用标签对照片进行自动分类

# 打开保存的labels文件
label_path = 'label/labels.json'
with open(label_path,'r') as f:labels = json.load(f)
print(labels)# 获取置信度最高的文件分类
classes =[[v[0]['tag'],k] for k, v in labels.items()]
classesfor cls in classes:if not os.path.exists('data/' + cls[0]):os.mkdir('data/'+ cls[0])# 复制被对应的图片shutil.copy('data/'+ cls[1], 'data/'+ cls[0]+ '/' + cls[1])print('已完成移复制!')

输出:

最终结果可以看到成功分类:


今天先唠到这,边学习边记录,有错误的欢迎指出^-^

华为云图像标签使用之智慧相册相关推荐

  1. 华为实验一 智慧相册

    图像标签实现智慧相册 1.图像标签服务初始化 1.1引入相关的库 In [147]: # 调用包从图像识别包中调用,图像标签,工具包 from image_sdk.utils import encod ...

  2. 详解typora配置华为云图床

    详解typora配置华为云图床 当前有很多不同的博客社区,不同的博客社区使用的编辑器也不尽相同,大概可以分为两种,一种是markdown格式,另外一种是富文本格式.例如华为云开发者社区文章编辑模式分为 ...

  3. 【开源】基于飞桨PaddleClas构建个人PC智慧相册

    开源 数据集:https://aistudio.baidu.com/aistudio/datasetdetail/110303 训练:https://aistudio.baidu.com/aistud ...

  4. 2020中国高校计算机大赛·华为云大数据挑战赛热身赛 之智慧交通预测挑战赛冠军团队师傅被妖怪抓走了-建模思路学习整理

    2020中国高校计算机大赛·华为云大数据挑战赛热身赛 之智慧交通预测挑战赛冠军团队师傅被妖怪抓走了-建模思路学习整理 创新点: 首次将Graph Convolution针对交通路况预测问题进行改进,使 ...

  5. 华为鸿蒙安装酷喵,荣耀智慧屏发布、华为鸿蒙OS首秀 这就是电视和智能生态的未来...

    原标题:荣耀智慧屏发布.华为鸿蒙OS首秀 这就是电视和智能生态的未来 8月9日-11日举办的2019华为开发者大会上,华为消费者业务CEO余承东终于正式宣布了鸿蒙OS,并在8月10日发布了首款搭载鸿蒙 ...

  6. 荣耀智慧屏功能曝光 首发华为鸿蒙OS,荣耀智慧屏功能曝光:首发华为鸿蒙OS,全场景智慧体验...

    IT之家8月9日消息 今日,华为开发者大会于东莞松山湖正式拉开帷幕.今天下午的焦点毫无疑问是鸿蒙OS与EMUI10.明日下午14:00,华为的另一个重磅产品荣耀智慧屏也将正式发布. 7月中旬,荣耀总裁 ...

  7. 华为鸿蒙os系统有哪些黑科技,华为首款搭载鸿蒙os智慧产品除了鸿蒙系统还有这黑科技...

    华为的鸿蒙系统自曝光以来,一直受到大家的关注,一度被认为是系统级别的产品,作用是为了取代安卓.但在后期的辟谣当中,证实了华为鸿蒙是智慧物联网系统,将搭载在车联网等产品上.在前日,终于曝出了第一款搭载鸿 ...

  8. 女博士年薪156万入职华为!实力演绎美貌与智慧并重

    华为最高档天才少年年薪201万,"天才少年"张霁,昨天冲上微博热搜. >>>> 而张霁在华中科技大学的博士同学姚婷, 也入选华为"天才少年&quo ...

  9. 华为云IoT专家直播——构筑智慧路灯实战分享

    万物互联智能世界来临,如何帮助物联网厂家尽快完成解决方案构筑并实现快速上线商用,是当前物联网平台面临的关键挑战之一. 那么,伙伴开发者如何基于华为云提供的IoT云服务,快速完成一款解决方案的开发和上线 ...

最新文章

  1. jquery.datatable能返回数据绑不上_地磁场可以影响人体机能吗?解释有多种,但都不理想...
  2. JSP/Servlet基础语法
  3. EF中三大开发模式之DB First,Model First,Code First以及在Production Environment中的抉择
  4. File.Create创建文件后,需要释放…
  5. 宇宙十大不为人知的事情
  6. 链表中求倒数第几个元素并打印出来
  7. java方法报错_.setUndecorated 方法报错
  8. mybatis mysql merge into_整合DRUID数据源+MyBatis
  9. python之路_kindEditor编辑器及beautifulsoup模块
  10. 传微软PK谷歌 将于2014年推出智能眼镜
  11. linux命令比较命令,Linux命令 比较文件
  12. getch方法_如何实现getch()函数的功能
  13. Linux内核系统调用原理与实现
  14. [句子成分] 一、主语
  15. python财务预算分析_财码Python管理会计小实验—滚动预算vs定期预算
  16. 云和恩墨 -全球化数据资产端到端解决方案服务商
  17. 夺冠之夜,荣耀的坚守和变通
  18. 道翰天琼认知智能奠基者领导者 中国原生认知智能科技 认知智能整体核心科技解密
  19. Springboot 项目中使用redis 的List结构来实现缓存分页分页
  20. 计算机网络Wireshark实验(西安交通大学)

热门文章

  1. 大体积、多数量excel文件排版转换为印刷版:pdf文件中标志图片模糊问题的解决
  2. C++程序设计原理与实践 习题答案 第二十六章 第26章习题答案
  3. ES生命周期管理 配置ilm策略
  4. 自学编程的30岁男人,能按应届生那样找工作吗?
  5. 华为云,奔跑的感觉爽吗?
  6. CISP和等保什么区别?
  7. 生活污水是怎么处理的
  8. SpringBoot微信小程序授权登录
  9. CH341A及XTW 2两种SPI FLASH烧录器的硬件使用说明_20220920【可用于升级主板BIOS】
  10. 很好的励志文章(特别针对刚刚进入职场的毕业生而写)