Closed mcpanl closed 2 months ago
我是用TCP接收了其他设备传来的JPEG编码的图片数据,并尝试将它显示到MaixCam屏幕上,结果发现image.from_bytes后print(img)显示format是null,而且大小为0(见下图)(由于RGB565或者RGB888太大了,TCP传输效率低,所以才用JPEG编码后才传输的):
如果此时不改变其他代码,只是将字节数据先保存为文件,再从文件读取,使用image.load读取,如果此时设置FMT_JPEG编码仍然是无法正常读取、无法正常显示到显示屏上的。
如果此时将FMT_JPEG改为FMT_RGB888或者FMT_BGR888就可以正常显示在显示屏上:
此时可能要问了,直接将from_bytes的format改为FMT_RGB888或者FMT_BGR888不就好了?我也试过了,都不行,会报错提示data_size与实际给定的width和height不一致。
附带我的jpeg图片: tmp_1719456876.1186235.zip
测试方法就是,将此jpeg放到Linux目录里面,然后用MaixCAM读取,用FMT_JPEG能成功读取且显示到显示屏上,那么问题应该就解决了。
请全屏观看下面完整录屏(已加速处理,已压缩画质) https://github.com/sipeed/MaixPy/assets/59745518/f18dc8e1-6d3c-4f07-ada6-4c9a5948103b
已经在最新的代码中支持 jpeg 解码: https://wiki.sipeed.com/maixpy/doc/zh/vision/image_ops.html#%E5%92%8C-bytes-%E6%95%B0%E6%8D%AE%E4%BA%92%E7%9B%B8%E8%BD%AC%E6%8D%A2
我是用TCP接收了其他设备传来的JPEG编码的图片数据,并尝试将它显示到MaixCam屏幕上,结果发现image.from_bytes后print(img)显示format是null,而且大小为0(见下图)(由于RGB565或者RGB888太大了,TCP传输效率低,所以才用JPEG编码后才传输的):
如果此时不改变其他代码,只是将字节数据先保存为文件,再从文件读取,使用image.load读取,如果此时设置FMT_JPEG编码仍然是无法正常读取、无法正常显示到显示屏上的。
如果此时将FMT_JPEG改为FMT_RGB888或者FMT_BGR888就可以正常显示在显示屏上:
此时可能要问了,直接将from_bytes的format改为FMT_RGB888或者FMT_BGR888不就好了?我也试过了,都不行,会报错提示data_size与实际给定的width和height不一致。
附带我的jpeg图片: tmp_1719456876.1186235.zip
测试方法就是,将此jpeg放到Linux目录里面,然后用MaixCAM读取,用FMT_JPEG能成功读取且显示到显示屏上,那么问题应该就解决了。
请全屏观看下面完整录屏(已加速处理,已压缩画质) https://github.com/sipeed/MaixPy/assets/59745518/f18dc8e1-6d3c-4f07-ada6-4c9a5948103b