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赋值操作方法分享
Mar 23 Python
Python写入CSV文件的方法
Jul 08 Python
Python 绘图和可视化详细介绍
Feb 11 Python
老生常谈python函数参数的区别(必看篇)
May 29 Python
python 调用c语言函数的方法
Sep 29 Python
python使用sqlite3时游标使用方法
Mar 13 Python
python异步存储数据详解
Mar 19 Python
python opencv摄像头的简单应用
Jun 06 Python
Python Numpy 实现交换两行和两列的方法
Jun 26 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
python os.rename实例用法详解
Dec 06 Python
请求模块urllib之PYTHON爬虫的基本使用
用Python仅20行代码编写一个简单的端口扫描器
Python实现视频自动打码的示例代码
Apr 08 #Python
Python OpenCV实现图形检测示例详解
Python语法学习之进程的创建与常用方法详解
基于PyQt5制作一个群发邮件工具
Python&Matlab实现樱花的绘制
You might like
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
js实现继承的5种方式
2015/12/01 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
python2.7到3.x迁移指南
2018/02/01 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
性能服装:HYLETE
2018/08/14 全球购物
测控技术与仪器个人求职信范文
2013/12/30 职场文书
社区娱乐活动方案
2014/08/21 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
工伤事故证明
2014/10/20 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
祝酒词范文
2015/08/12 职场文书
十二月早安励志心语大全
2019/12/03 职场文书