ホームページ >バックエンド開発 >Python チュートリアル >これは楽しいです! Pythonを使って花の種類を識別して自動で整理・分類!
「Wuxiaoliang's Popular Science Daily」では、オンラインで人気の生物を特定するビデオを頻繁に公開しており、生物学の知識を広めるだけでなく、視聴者の好奇心を満たします。今日もネットで人気の植物を特定します!最近春にはたくさんの花が咲き、たまたま清明の祝日を利用して屋外に出て花の写真をたくさん撮りました。
#私たちはあまり花に詳しくないため、ソフトウェアを使用して花の種類を識別する必要があります。 Huamate、Xingse、Baidu など、市場には多くの花認識ソフトウェアがあります。テストの結果、Baidu が最も優れた認識効果を持っていることがわかりました。そこで私はアイデアを思いついたのですが、Baidu のインターフェイスをバッチ呼び出しして花の写真を識別して分類することはできるでしょうか? (完全なコードについては、記事の最後を参照してください)
Baidu の画像認識インターフェイスは、100,000 を超えるオブジェクトやシーンを正確に識別できます。高精度な画像認識機能を備え、対応するAPIサービスを提供します。
https://www.php.cn/link/17d187eaf6157b4e219552d6a187290a
次の手順に従って作成します。新しいアプリケーションを作成し、次の図に示すように独自の API キーと秘密キーを取得します。
#画像認識は、複数の垂直認識サービスの柔軟な組み合わせ呼び出しをサポートする組み合わせ API インターフェイスを提供します。ここでは、ニーズに合わせて植物認識のみを呼び出す必要があります。 Python で Baidu 画像認識 API インターフェイスを呼び出すにはどうすればよいですか? 最初のステップは、認証インターフェイスを呼び出してトークンを取得することです。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)2 番目のステップは、イメージ タイプを識別することです 対話型環境で次のコマンドを入力します:
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'])出力:
桜Baidu 画像認識インターフェースを呼び出したときの戻りパラメータは次の図に示されており、必要なのは name (植物名) パラメータだけです。 写真ファイルの読み取り撮影した写真は D: ダウンロードフラワー コレクション パスに保存しているため、os モジュールを使用してファイルを読み取る必要があります。 file list 、後続のバッチ操作を容易にするため。 対話型環境で次のコマンドを入力します:
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() 関数では、前の記事の Baidu 画像認識コードをカスタム関数にカプセル化します。この関数は、次の場合に返すことができます。ここに呼ばれます 写真に対応するflower_nameを取得します。 以降のコードは先ほど共有した自動分類整理ファイルとほぼ同じで、花の名前に対応するフォルダが既に存在するかどうかを判定し、存在しない場合は作成するというものです。最後に、shutil モジュールを呼び出して、花の写真を対応するフォルダーに移動します。 具体的な実行効果を以下のアニメーションに示します。
以上がこれは楽しいです! Pythonを使って花の種類を識別して自動で整理・分類!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。