我目前正在使用 Raspberry Pi 4 在 Python 中从传感器、DHT22、AS312 等发送和接收数据。我的主要问题是当我在这里收到图像时是抽象的(注意这里看到的路径不是真实的路径)。
import time
import serial
import pandas as pd
import numpy as np
import threading
from memory_mangment import sensor_data
class Transceiver:
def __init__(self,data):
self.transceive=serial.Serial(port='/dev/tty50',
baudrate=9600,
parity=serial.Parity_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1)
self.message="Hello world! "
self.data=data
self.txt_fname="/path/to/txtfile.txt"
self.png_fnam="/path/to/pngfile.png"
self.csv_fname=sensor_data().fname
self.recived=self.transceive.in_waiting
self.event=threading.Event()
def Transmit_test_png_file(self):
"""Transmit a PNG file"""
with open(self.png_fname, 'rb') as f:
data = f.read()
self.transceive.write(data)
def Receive_test_png_file(self):
"Receive a PNG file"""
self.transceive.attachInterrupt(self.serial_interrupt)
if self.event.is_set():
data_read = self.transceive.readlines()
这是我的主要问题:它将打印“[b'\x89PNG” ', b'\x1a ', b'\x00\x0 ... ” 等等。如果您没有无线电模块,这里是复制我的问题的方法:
import cv2
img_fname=r"/path/to/testfile.png"
with open(img_fname,'rb') as f:
data=f.readlines()
我想知道是否可以使用
cv2.imdecode
来解码它。我查看了一些标志,只是想知道是否有人对我可以用来解码的标志有任何建议,或者是否有更简单的方法来做到这一点。让我知道(注:我知道一些)。
除非您的 PNG 图像总大小低于 240 字节,否则不会完整传输。 LoRa 数据包中可以传输的最大字节数为 256,其中包括开销。
如果您想要进行战斗更改来获取该图像,则需要将其拆分为块,添加标头(xx/yy 块 xx 从 yy 块中取出),然后将它们一一发送,块之间有一个暂停(另请记住合理使用规则,通常为 1% 的通话时间)。
但严重的是,LoRa 不适合传输图像等重负载。