IOS、Python自学心得30天 Day-25 Firebase衔接Python-3

前言:
在试做的时候分成两个档案
firebase 设定的时候好像只能用一次
不然会报错
所以我写在 def 里
用同个PY档案去跑

程序码:

import time
import sys
import numpy as np
from firebase import firebase
from tensorflow.python.keras import backend as K
from tensorflow.python.keras.models import load_model
from tensorflow.python.keras.preprocessing import image

def downloadFireBase():
    import pyrebase
    import os
    import time
    from firebase import firebase

    config = {
        "apiKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "authDomain": "XXXXXXXXXXXXXXXXXX.firebaseio.com",
        "databaseURL": "https://XXXXXXXXXXXXXXXXXX.firebaseio.com",
        "projectId": "XXXXXXXX",
        "storageBucket": "XXXXXXXX.appspot.com",
        "messagingSenderId": "数字",
        "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    }

    firebase = pyrebase.initialize_app(config)
    storage = firebase.storage()
    my_image = "dog.jpg"

    # Upload Image
    # storage.child(my_image).put(my_image)


    # Get url of image
    auth = firebase.auth()
    email = "[email protected]"
    password = "XXXXXXXXXX"
    user = auth.sign_in_with_email_and_password(email, password)

    time.sleep(4)
    url = storage.child(my_image).get_url(user['idToken'])
    # Download Image
    storage.child(my_image).download(filename="dog.jpg", path=os.path.basename(my_image))
    print(url)

def detectPhoto():
    import time
    import sys
    import numpy as np
    from firebase import firebase
    from tensorflow.python.keras import backend as K
    from tensorflow.python.keras.models import load_model
    from tensorflow.python.keras.preprocessing import image


    key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    authentication = firebase.FirebaseAuthentication(key, '[email protected]')
    firebase.authentication = authentication
    user = authentication.get_user()
    firebase = firebase.FirebaseApplication('https://XXXXXXXXXXXXXXXXXX.firebaseio.com/', authentication=authentication)
    resultAcc = firebase.get('/dogAcc', '')
    print(resultAcc)
    resultName = firebase.get('/dogName', '')
    print(resultName)
    # 从参数读取图档路径
    files = ["dog.jpg"]
    print(files)
    print("=============================")
    # 载入训练好的模型
    net = load_model('model-resnet50-final-11.h5')

    cls_list = [...]

    # 辨识每一张图
    for f in files:
        img = image.load_img(f, target_size=(300, 300))
        if img is None:
            continue
        x = image.img_to_array(img)
        x = np.expand_dims(x, axis = 0)
        pred = net.predict(x)[0]
        top_inds = pred.argsort()[::-1][:1]
        print(f)
        for i in top_inds:
            print('准确率: {:.2%}   {}'.format(pred[i], cls_list[i]))
            firebase.put('/dogAcc','Acc' , '{:.2%}'.format(pred[i]))
            firebase.put('/dogName','Name' , '{}'.format(cls_list[i])) 
            firebase.put('/DetectBool', 'Bool', 'False')
        #firebase.delete("/dogDetail",'AC')

key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
authentication = firebase.FirebaseAuthentication(key, '[email protected]')
firebase.authentication = authentication
user = authentication.get_user()
firebase = firebase.FirebaseApplication('https://XXXXXXXXXXXXXXXXXX.firebaseio.com/', authentication=authentication)
while True:
    if firebase.get('/DetectBool', 'Bool') == "True":
        print("前端侦测开启")
        if firebase.get('/DownloadBool', 'Bool') == "False":
            firebase.put('/DownloadBool', 'Bool', 'True')
            print("等候照片上传完毕...")
            time.sleep(8)
            downloadFireBase()
            print("照片下载成功!")
            firebase.put('/DownloadBool', 'Bool', 'False')
            if firebase.get('/DetectBool', 'Bool') == "True":
                print("前端侦测开启,开始辨识...")
                detectPhoto()
                print("资料上传完毕!")
    else:
        time.sleep(4)
        print("前端侦测关闭中...")

<<:  <Day13> Ticks — 取得股票(Stock)逐笔成交资料

>>:  GitHub Saved Replies - Repository Owner 好用的回覆小技巧

[Day17] - 在 Vue 中引入现成的 Web Component

当我们拿到一个现有的 Web Component 时 , 如果直接在 Vue 专案中使用会抱错 今天...

DAY18聚类演算法(kmeans)

昨天介绍完kmeans演算法,今天就要实际写程序: 首先先创建一笔资料并绘图: 程序如下: impo...

认识CSS(六):CSS border边框

透过broder的语法可以让边框做多样化的设计变化, 边框的粗细、颜色、样式等数性质都可设定。 CS...

Django #2 专案:新增 与 启动

Syntax: django-admin help 1.新增专案 1-1 PyCharm 1-2 ...