Python识别花卉种类鉴定网络热门植物并自动整理分类


Posted in Python onApril 08, 2022

大家好,我是小五

“无穷小亮的科普日常”经常会发布一些鉴定网络热门生物视频,既科普了生物知识,又满足观众们的猎奇心理。今天我们也来鉴定一下网络热门植物!最近春天很多花都开了,我正好趁着清明假期到户外踏青并拍摄了不少花卉的照片。

Python识别花卉种类鉴定网络热门植物并自动整理分类

由于对很多花不是特别熟悉,所以我们需要借助软件来识别究竟是什么花的种类。市面上的识花软件有很多,比如花伴侣、形色、百度等等,我测试后发现百度的识别效果最为优秀。于是我就有了一个想法,能不能批量调用百度的接口,对花卉照片进行识别并分类呢?

Python识别花卉种类鉴定网络热门植物并自动整理分类

百度图像识别

百度的图像识别接口,可以精准识别超过十万种物体和场景,包含10余项高精度的识图能力并提供相应的API服务。

https://cloud.baidu.com/product/imagerecognition

Python识别花卉种类鉴定网络热门植物并自动整理分类

我们按照步骤创建新应用,并得到专属自己的API Key和Secret Key,具体如下图所示。

Python识别花卉种类鉴定网络热门植物并自动整理分类

图像识别提供一个组合API接口,支持多种垂类识别服务的灵活组合调用,这里只需要调用植物识别就可以满足需求。

如何Python调用百度图像识别API接口?

第一步,调用鉴权接口获取token。

API_Key = '**********'
Secret_Key = '**********'

def get_access_token(API_Key,Secret_Key): 
    host = '**********'
    response = requests.get(host)
    return response.json()['access_token']

access_token = get_access_token(API_Key,Secret_Key)

第二步,识别图像种类

Python识别花卉种类鉴定网络热门植物并自动整理分类

在交互式环境中输入如下命令:

import requests
import base64

request_url = '**********'
# 二进制方式打开图片文件
f = open(r'D:\下载\QQ截图20220407203203.png', 'rb')
img = base64.b64encode(f.read())

params = {"image":img}
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
    print (response.json()['result'][0]['name'])

输出:

樱花

调用百度图像识别接口的返回参数如下图所示,对我们来说,只需要其中的name(植物名称)参数。

Python识别花卉种类鉴定网络热门植物并自动整理分类

读取照片文件

我将拍摄的照片存放在D:\下载\花卉合集路径下,所以需要使用os模块进行读取文件列表,方便进行后续的批量操作。

在交互式环境中输入如下命令:

import os
path = "D:\下载\花卉合集"

filenames = os.listdir(path)
filenames

输出:

['QQ截图20220405223301.png',
 'QQ截图20220405223320.png',
 ......
 '微信图片_20220405225020.jpg',
 '微信图片_20220405225023.jpg']

os模块中的listdir()⽅法,接收⼀个路径参数path,返回的是该路径下所有⽂件的⽂件名组成的列表。这样,我们就获取了该路径下所有的花卉图片文件名,如下图所示。

Python识别花卉种类鉴定网络热门植物并自动整理分类

整理分类照片

接着,我们便可以使用for循环语句,依次对花卉照片进行图像识别,并按照识别出的名称进行分类整理到对应的文件夹中。

在交互式环境中输入如下命令:

for i in filenames:
    flower_name = get_fname(i)
    file_path = os.path.join(path,i)
    folder_path = os.path.join(path,flower_name)
    if not os.path.exists(folder_path): 
        os.mkdir(folder_path)
    shutil.move(file_path,folder_path)

其中get_fname()函数,是我们将前文中百度图像识别代码封装为一个自定义函数,此处调用即可返回得到照片对应的花卉名称flower_name

后续的代码与之前分享过的自动分类整理文件几乎一致,即if判断是否已经存在对应花卉名称的文件夹,若不存在则创建。最后,调用shutil模块移动花卉照片至对应文件夹。

具体执行效果,如下方动图所示。

Python识别花卉种类鉴定网络热门植物并自动整理分类

以上就是Python实现识别花卉种类的示例代码的详细内容,更多关于Python识别花卉种类的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python处理文本文件实现生成指定格式文件的方法
Jul 31 Python
python 网络编程详解及简单实例
Apr 25 Python
Python使用django搭建web开发环境
Jun 09 Python
python 读取txt中每行数据,并且保存到excel中的实例
Apr 29 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
eclipse创建python项目步骤详解
May 10 Python
Python在cmd上打印彩色文字实现过程详解
Aug 07 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
python设置表格边框的具体方法
Jul 17 Python
Python Http请求json解析库用法解析
Nov 28 Python
python3实现简单飞机大战
Nov 29 Python
请求模块urllib之PYTHON爬虫的基本使用
用Python仅20行代码编写一个简单的端口扫描器
Python实现视频自动打码的示例代码
Apr 08 #Python
Python OpenCV实现图形检测示例详解
Python语法学习之进程的创建与常用方法详解
基于PyQt5制作一个群发邮件工具
Python&Matlab实现樱花的绘制
You might like
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
个人写的PHP验证码生成类分享
2014/08/21 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
JavaScript 函数调用规则
2009/09/14 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
javascript RegExp 使用说明
2016/05/21 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
Python模拟登录12306的方法
2014/12/30 Python
10款最好的Web开发的 Python 框架
2015/03/18 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
Python实现完整的事务操作示例
2017/06/20 Python
使用tensorflow实现AlexNet
2017/11/20 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Python: 传递列表副本方式
2019/12/19 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
棉花姑娘教学反思
2014/02/15 职场文书
秋游活动策划方案
2014/02/16 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
公司员工离职感言
2015/08/03 职场文书
2019年大学推荐信
2019/06/24 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
TypeScript 内置高级类型编程示例
2022/09/23 Javascript