【问题标题】:How to read image from Firebase using OpencCV?如何使用 OpencV 从 Firebase 读取图像?
【发布时间】:2019-12-15 12:34:03
【问题描述】:

有没有使用 OpenCV 从 Firebase 读取图像的想法?还是我必须先下载图片,然后从本地文件夹执行 cv.imread 功能?

有什么方法可以让我使用cv.imread(link_of_picture_from_firebase)

【问题讨论】:

  • 您最初是如何将图片上传到 Firebase 的?您不需要将图像保存到磁盘 - 您应该能够从 Firebase 获取图像,然后使用 cv.imdecode() 将 JPEG 编码的数据转换为 Numpy 数组。
  • 嗯,你能帮我解决一下 cv.imdecode() 吗? imdecode 的论点是什么?你有什么参考吗?谢谢!
  • 我使用pyrebase库上传了照片,它是db.child("....").put(data)
  • 请问您上面的最后一条评论中的"data" 是什么?它必须是某种类型的 JSON 可序列化数据,那么你是如何初始化这个变量的?

标签: python firebase opencv pyrebase


【解决方案1】:

您可以这样做:

  • 从磁盘读取 JPEG,
  • 转换为 JSON,
  • 上传到 Firebase

那么你可以:

  • 从 Firebase 取回图像
  • 将 JPEG 数据解码回 Numpy 数组
  • 将检索到的图像保存在磁盘上

#!/usr/bin/env python3

import numpy as np
import cv2
from base64 import b64encode, b64decode
import pyrebase

config = {
   "apiKey": "SECRET",
   "authDomain": "SECRET",
   "databaseURL": "SECRET",
   "storageBucket": "SECRET",
   "appId": "SECRET",
   "serviceAccount": "FirebaseCredentials.json"
}

# Initialise and connect to Firebase
firebase = pyrebase.initialize_app(config)
db = firebase.database()

# Read JPEG image from disk...
# ... convert to UTF and JSON
# ... and upload to Firebase
with open("image2.jpg", 'rb') as f:
    data = f.read()
str = b64encode(data).decode('UTF-8')
db.child("image").set({"data": str})


# Retrieve image from Firebase
retrieved = db.child("image").get().val()
retrData = retrieved["data"]
JPEG = b64decode(retrData)

image = cv2.imdecode(np.frombuffer(JPEG,dtype=np.uint8), cv2.IMREAD_COLOR)
cv2.imwrite('result.jpg',image)

【讨论】:

  • 好的,我先试一试,但是对于图片,我可以从 firebase 存储中检索它吗?因为我是用我的安卓应用上传的,是纯JPEG图片
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 2016-02-28
  • 2016-10-13
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
相关资源
最近更新 更多