« Infinite Little Light's Popular Science Daily » publie souvent des vidéos identifiant des organismes populaires en ligne, ce qui non seulement vulgarise les connaissances biologiques, mais satisfait également la curiosité du public. Aujourd’hui, nous allons également identifier les plantes populaires sur Internet ! De nombreuses fleurs ont fleuri au printemps récemment. J'ai profité des vacances de Qingming pour sortir et prendre beaucoup de photos de fleurs.
Comme nous ne connaissons pas particulièrement beaucoup de fleurs, nous devons utiliser un logiciel pour identifier de quel type de fleur il s'agit. Il existe de nombreux logiciels de reconnaissance de fleurs sur le marché, tels que Huamate, Xingse, Baidu, etc. Après tests, j'ai découvert que Baidu avait le meilleur effet de reconnaissance. J'ai donc eu une idée. Puis-je appeler par lots l'interface de Baidu pour identifier et classer les photos de fleurs ? (Voir la fin de l'article pour le code complet)
L'interface de reconnaissance d'image de Baidu peut identifier avec précision plus de 100 000 objets et scènes, y compris plus de 10 capacités de reconnaissance d'image de haute précision et fournit l'API correspondante services.
//m.sbmmt.com/link/17d187eaf6157b4e219552d6a187290a
Nous suivons les étapes pour créer une nouvelle application et obtenir notre propre clé API et clé secrète, comme le montre la figure ci-dessous.
La reconnaissance d'images fournit une interface API combinée qui prend en charge les appels combinés flexibles de plusieurs services de reconnaissance verticale. Ici, seule la reconnaissance des plantes doit être appelée pour répondre aux besoins.
Comment appeler l'interface API de reconnaissance d'image Baidu en Python ?
La première étape consiste à appeler l'interface d'authentification pour obtenir le 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)
La deuxième étape consiste à identifier le type d'image
Entrez la commande suivante dans l'environnement interactif :
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'])
Sortie :
Sakura
Les paramètres de retour de l'appel de l'interface de reconnaissance d'image Baidu sont tels qu'indiqués dans le figure ci-dessous, pour nous, disons, seul le paramètre name (nom de la plante) est nécessaire.
Je stocke les photos prises dans le chemin D: télécharger la collection de fleurs, je dois donc utiliser le module os pour lire la liste des fichiers afin de faciliter les opérations par lots ultérieures.
Entrez la commande suivante dans l'environnement interactif :
import os path = "D:下载花卉合集" filenames = os.listdir(path) filenames
Output :
['QQ截图20220405223301.png', 'QQ截图20220405223320.png', ...... '微信图片_20220405225020.jpg', '微信图片_20220405225023.jpg']
La méthode listdir() dans le module os reçoit un chemin de paramètre de chemin et renvoie les noms de fichiers de tous les fichiers sous la liste composée de chemins. De cette façon, nous avons obtenu les noms de fichiers de toutes les images de fleurs sous ce chemin, comme le montre la figure ci-dessous.
Ensuite, nous pouvons utiliser l'instruction de boucle for pour effectuer une reconnaissance d'image sur les photos de fleurs en séquence et les classer dans les dossiers correspondants en fonction des noms reconnus.
Entrez la commande suivante dans l'environnement interactif :
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)
La fonction get_fname() est l'endroit où nous encapsulons le code de reconnaissance d'image Baidu dans l'article précédent dans une fonction personnalisée. L'appeler ici peut renvoyer le nom de la fleur correspondant à la photo.
Le code suivant est presque le même que le fichier de classification automatique partagé auparavant, c'est-à-dire qu'il détermine si le dossier correspondant au nom de la fleur existe déjà, et s'il n'existe pas, créez-le. Enfin, appelez le module Shutil pour déplacer les photos de fleurs vers le dossier correspondant.
L'effet d'exécution spécifique est montré dans l'animation ci-dessous.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!