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 相关文章推荐
Python2.x中文乱码问题解决方法
Jun 02 Python
python实现DES加密解密方法实例详解
Jun 30 Python
Python实现批量将word转html并将html内容发布至网站的方法
Jul 14 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
python爬取指定微信公众号文章
Dec 20 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
Django 用户认证组件使用详解
Jul 23 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
python 生成任意形状的凸包图代码
Apr 16 Python
python爬虫---requests库的用法详解
Sep 28 Python
python中xlrd模块的使用详解
Feb 01 Python
请求模块urllib之PYTHON爬虫的基本使用
用Python仅20行代码编写一个简单的端口扫描器
Python实现视频自动打码的示例代码
Apr 08 #Python
Python OpenCV实现图形检测示例详解
Python语法学习之进程的创建与常用方法详解
基于PyQt5制作一个群发邮件工具
Python&Matlab实现樱花的绘制
You might like
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP反射基础知识回顾
2020/09/10 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
javascript头像上传代码实例
2019/09/28 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
python安装requests库的实例代码
2019/06/25 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
台湾专柜女包:KINAZ
2019/12/26 全球购物
专营店会计助理岗位职责
2013/11/29 职场文书
《火烧云》教学反思
2014/04/12 职场文书
旷课检讨书500字
2014/10/14 职场文书
导游词之五台山
2019/10/11 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
分享几个实用的CSS代码块
2022/06/10 HTML / CSS