提问人:Jun_Pegas 提问时间:10/31/2023 最后编辑:CallMeStagJun_Pegas 更新时间:10/31/2023 访问量:58
如何在不保存文件的情况下从 Telegram 获取照片文件的字节数?
How to get the bytes of a photo file from Telegram without saving the file?
问:
我正在开发一个电报机器人,它可以接收带有条形码的照片。 我通过 Telebot 模块与 Telegram API 交互 对照片进行处理,识别条形码并将其存储在数据库中。 卡在一个地方。 电报中的照片以字节格式下载。 这张照片可以保存为png格式,然后使用opencv模块由条形码处理和识别。 但是 openCV 模块已经可以与 DOWNLOADED 映像一起使用。 如何在不保存图像的情况下将字节数据类型传递给 openCV 模块?
我将字节码格式化为一个 numpy 数组。 但是 opencv 无法看到和识别条形码。 我保存了图像。然后我通过openCV打开它,条形码被识别出来。 但是我想在不保存的情况下传输图像。
your text
import telebot as tb
from config import token
import scanner
import cv2
import numpy as np
from pyzbar.pyzbar import decode
import base64
import PIL.Image as Image
import io
bot = tb.TeleBot(token)
bot.set_my_commands([
tb.types.BotCommand("/start", "Start")])
@bot.message_handler(commands=['start'])
def start_bot(message):
bot.send_message(message.chat.id, 'Start Bot')
@bot.message_handler(func=lambda m: True, content_types=['photo'])
def get_broadcast_picture(message):
file_path = bot.get_file(message.photo[1].file_id).file_path
file = bot.download_file(file_path)
result_code = scanner_bar_cv2(file)
bot.send_message(message.chat.id, result_code)
def scanner_bar_cv2(name_file: bytes):
nparr = np.fromstring(name_file, np.uint8)
r = cv2.imdecode(nparr, cv2.IMREAD_UNCHANGED)
# img = cv2.imread(path)
bd = cv2.barcode.BarcodeDetector()
img = bd.detectAndDecode(r)
if __name__ == "__main__":
bot.polling(non_stop=True, timeout=123)
答: 暂无答案
评论
bytes
imdecode()
imdecode()
imread()
imread()
imdecode()