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实现生成简单的Makefile文件代码示例
Mar 10 Python
使用Python程序抓取新浪在国内的所有IP的教程
May 04 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
Python 使用os.remove删除文件夹时报错的解决方法
Jan 13 Python
Python上下文管理器和with块详解
Sep 09 Python
浅谈Python peewee 使用经验
Oct 20 Python
Python continue继续循环用法总结
Jun 10 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
pandas 中对特征进行硬编码和onehot编码的实现
Dec 20 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
Dec 25 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 Python
请求模块urllib之PYTHON爬虫的基本使用
用Python仅20行代码编写一个简单的端口扫描器
Python实现视频自动打码的示例代码
Apr 08 #Python
Python OpenCV实现图形检测示例详解
Python语法学习之进程的创建与常用方法详解
基于PyQt5制作一个群发邮件工具
Python&Matlab实现樱花的绘制
You might like
php include的妙用,实现路径加密
2008/07/29 PHP
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
Bootstrap 树控件使用经验分享(图文解说)
2017/11/06 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
详解python中的lambda与sorted函数
2020/09/04 Python
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
退休感言
2014/01/28 职场文书
介绍信的写法
2015/01/31 职场文书
学校端午节活动总结
2015/02/11 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
python实现局部图像放大
2021/11/17 Python
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript