前言:

对于k210,实际使用时,由于kpu的存在,我们很少会将图片传送到上位机进行解析(单纯拍图片的话,esp32cam不香吗/滑稽)。由于跑模型对内存有要求,停用K210的senor,而使用其他设备拍照传输到K210上进行处理,能更高效的发挥K210的性能(比如来块新出的 Grove ,搭载上树莓派,开启Kpu Trubo)

V7%7DWRAG%7BN_%40IYUGMYI8O4OG.png

正文开始!

通过上个帖子,我们已经学会的to _bytes的使用。对于MAIXPY,也提供了 from_bytes 的代码。

从内存读取(或者网络读取)
可以先将文件读取到内存, 具体是从哪里读取的看你的应用了, 比如网络,或者串口 SPI 等等,
构造一个 bytes对象

import image  
jpeg_buff = b'\xFF' # jpeg buffer  
img = image.Image(jpeg_buff, from_bytes = True)  
print(img)  

由于串口接收到的为bytes格式数据,我们可以直接对串口接收到的数据进行操作。这里直接提供代码:

img=uart_A.read()  
if img!= None:#如果串口buffer读取到了数据  
#print(img)  
back = image.Image(img, from_bytes = True)#转为img  

这里有两点需要注意:一是图片数据不能过大,经过测试,当图片大小大于100k时,会报MermoryError

8D_S~~J%5D18~X8CKJRZ2LC%60U.png

二是波特率不能过高,经过测试,当波特率为1382400时,会报ValueError: format not supported。

KBTS%24SDM61_%24G_G0LH%40B6JQ.png

1152000能正常使用,推测是过高的波特率导致了数据损坏。
设置好读取的参数口,打开vofa+,协议选择rawdata(也就是正常串口助手,你也可以使用其他的),发送图片。
成功点亮lcd!

43(D39NSY8VADRD%24KB6ZSQ9.png

 


文章来源于Sipeed点灯鼠,原文链接:https://bbs.sipeed.com/thread/527

搬运请注明原文地址


完整代码如下:

# Untitled - By: Lithromantic - 周日 2月 7 2021  
#注意,复用uart后,ide将无法使用  
from fpioa_manager import fm  
fm.register(9, fm.fpioa.UART1_TX, force=True)  
fm.register(10, fm.fpioa.UART1_RX, force=True)  
from machine import UART  
import sensor, image, time,lcd  
lcd.init(freq=15000000)  
uart_A = UART(UART.UART1, 1152000, 8, 1, 0, timeout=1000, read_buf_len=4096)  
img = []  
clock = time.clock()  
while(True):  
clock.tick()  
img=uart_A.read()  
if img!= None:  
#print(img)  
back = image.Image(img, from_bytes = True)  
uart_A.write("success")  
print(back)  
lcd.rotation(1)  
lcd.display(back)  
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐