百木园-与人分享,
就是让自己快乐。

Python 识别花卉种类,并自动整理分类

怎么会有人不喜欢花呢?今天我们也来鉴定一下网络热门植物!最近春天很多花都开了,我正好趁着清明假期到户外踏青并拍摄

了不少花卉的照片。
在这里插入图片描述

由于对很多花不是特别熟悉,所以我们需要借助软件来识别究竟是什么花的种类。市面上的识花软件有很多,比如花伴侣、形

色、百度等等,我测试后发现百度的识别效果最为优秀。于是我就有了一个想法,能不能批量调用百度的接口,对花卉照片进行

识别并分类呢?

在这里插入图片描述

百度图像识别

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

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

在这里插入图片描述

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

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

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

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

Python学习交流Q群:906715085###
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学习交流Q群:906715085####
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(植物名称)参数。

在这里插入图片描述

读取照片文件

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

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

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

filenames = os.listdir(path)
filenames

 

输出:

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

 

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

下所有的花卉图片文件名,如下图所示。

在这里插入图片描述

整理分类照片

接着,我们便可以使用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。

在这里插入图片描述


来源:https://www.cnblogs.com/123456feng/p/16159674.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » Python 识别花卉种类,并自动整理分类

相关推荐

  • 暂无文章