無料運用 LINEbotでAIの顔認識webサービスができるまで。 ~Develop編③~

2019/11/15

AI 開発試行

アプリケーションのスケルトンを説明します。merge_face.py、box_upload.pyアプリケーションについて、部位ごとに掲載していきます。各API等の仕様については、リンクしていきますので、そちらをご参照ください。


Develop編③


merge_face.py


import requests
# パラメータは、templateとmergeのイメージファイルと顔座標、api_key,api_secret key
def merge_face(template,template_rectangle,merge,merge_rectangle,api_key,api_secret):
 # requestのURL
  url = "https://api-us.faceplusplus.com/imagepp/v1/mergeface"

  # requestのパラメータ
       , 'api_secret': api_secret
       ,'template_base64': template
       ,'template_rectangle': template_rectangle
       ,'merge_base64': merge
       ,'merge_rectangle' : merge_rectangle
       ,'merge_rate':[80,20]
       }
   try:
       # レスポンスは、JSON形式。
       # 合成イメージは、facesパラメータにリスト形式で格納される。
       r = requests.post(url, data=payload) 
       r = r.json()
       return r["result"]
   except:
       print(r["error_message"])
       print("サーバーの接続に失敗したか画像を正しく認識できませんでした。")

that is it


box_upload.py


from boxsdk import JWTAuth
from boxsdk import Client
from boxsdk.exception import BoxAPIException


# boxストレージにファイルをアップロード
def box_upload(file_name,fileobj,box_folder_id,box_client_id,box_client_secret,box_enterprise_id,box_jwt_key_id,box_rsa_private_key_filepath,box_rsa_private_key_passphrase):

   # Configure JWT auth object
   # Get auth client
   sdk = JWTAuth(
       client_id=box_client_id,
       client_secret=box_client_secret,
       enterprise_id=box_enterprise_id,
       jwt_key_id=box_jwt_key_id,
       rsa_private_key_file_sys_path=box_rsa_private_key_filepath,
       rsa_private_key_passphrase=box_rsa_private_key_passphrase
   )

   try:
       # Boxインスタンス作成
       client = Client(sdk)
       # Boxストレージのフォルダを指定
       folder = client.folder(folder_id=box_folder_id)

       # TempFileに、画像を書き込む
       import tempfile
       fp = tempfile.NamedTemporaryFile(mode='w+b',delete=True)
       with open(fp.name , 'w+b') as f:
           f.write(fileobj)
       # TempFileのファイルパスをアップロードに指定する。ローカルじゃないとだめみたい
       box_file = folder.upload(fp.name, file_name)
       fp.close()
       # 共有リンクURLを取得する。
       return box_file.get_shared_link()

   except BoxAPIException as e:
       print("box_upload:" + e.message)
   except Exception as e:
       print("box_upload:サーバーの接続に失敗したか、画像を正しく処理できませんでした。")
   return ""


# boxストレージの共有ファイルを削除
def box_remove(box_folder_id,box_client_id,box_client_secret,box_enterprise_id,box_jwt_key_id,box_rsa_private_key_filepath,box_rsa_private_key_passphrase):    
   # Configure JWT auth object
   # Get auth client
   sdk = JWTAuth(
       client_id=box_client_id,
       client_secret=box_client_secret,
       enterprise_id=box_enterprise_id,
       jwt_key_id=box_jwt_key_id,
       rsa_private_key_file_sys_path=box_rsa_private_key_filepath,
       rsa_private_key_passphrase=box_rsa_private_key_passphrase
   )

   try:
       # Boxインスタンス作成
       client = Client(sdk)
       # Boxストレージのフォルダを指定
       folder = client.folder(folder_id=box_folder_id)        
       # フォルダ上のファイルオブジェクトを取得
       items = folder.get_items()
       # 一件ずつ取得して全部を削除。個別削除をするにはファイルidを識別する必要がある。
       for item in items:
           item.delete()

   except Exception as e:
       print("box_upload:サーバーの接続に失敗したか、画像を正しく処理できませんでした。")
   return ""

tosd Noteについて

RSS Feed資格や仕事、サラリーマンとしての備忘録です。

このブログを検索

ブログ アーカイブ

QooQ