# Image Memory Stream I/O Example
#
# 本例程演示如何使用ImageIO流在内存中记录帧并进行回放。
# 注意:虽然这在任何板上都可以使用,但是板上应该有一个SDRAM可以使用。
import sensor, image, time
# 要预分配和记录的帧数
N_FRAMES = 500
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
# 该帧大小必须与传递给ImageIO的图像大小匹配
sensor.set_windowing((120, 120))
sensor.skip_frames(time = 2000)
clock = time.clock()
# 打开MJPEG格式的视频文件并创建 ImageIO 对象
video = image.ImageIO("xunxian6.1.mjpeg", "r")
stream = image.ImageIO((120, 120, 2), video.get_frame_count())
# 将视频中的每个帧写入图像流对象
for i in range(0, video.get_frame_count()):
# 读取视频中的下一帧并将其转换为OpenMV图像对象
img = video.next_frame(copy_to_fb=True)
# 将图像写入图像流对象
stream.write(img)
# 回放流并以100FPS播放
stream.seek(0)
for i in range(0, stream.get_length()):
img = stream.read(copy_to_fb=True)
# 在此处对图像执行机器视觉算法
time.sleep_ms(10)
这是装在openmv上的sd卡内容,在电脑运行在video = image.ImageIO("xunxian6.1.mjpeg", "r")那行OSError: Unexpected value read!错误,麻烦帮忙看看如何解决
然后尝试将文件电脑文件夹中运行也是相同的错误
于是向用读取二进制视频的代码录取视频再读取
# 读取二进制视频示例
#
# 此示例需要使用uSD内存卡
#
# 本示例说明如何使用“图像读取器Image Reader”对象重放由“图像写入器Image Writer”对象保存的OpenMV所看到的图像以测试机器视觉算法。
# 更改为允许从SD卡全速读取,以将序列提取到网络等。
# 将新的暂停参数设置为false
import sensor, image, time
snapshot_source = False # 一旦完成从传感器提取数据,将其设置为true。
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()
stream = None
if snapshot_source == False:
stream = image.ImageIO("/stream.bin", "r")
while(True):
clock.tick()
if snapshot_source:
img = sensor.snapshot()
else:
img = stream.read(copy_to_fb=True, loop=True, pause=True)
# 在此处对图像执行机器视觉算法。
print(clock.fps())
但是显示AttributeError: 'module' object has no attribute 'ImageReader',我的openmv是MV4 PLUS H7版本,固件也是最新的,不知道为什么会显示这种错误,请帮忙指出问题所在和解决方法