例程讲解34-image_transfer_jpg_streaming_as_the_remote_device_for_your_computer OpenMV作为受控设备传输jpg流到电脑
# 图像传输-作为远程设备
#
# 该脚本旨在与您计算机上的 "image_transfer_jpg_as_the_controller_device.py" 对话。
#
# 这个脚本演示了如何将帧缓冲区作为jpeg图像传输到您的计算机。
import network, omv, rpc, sensor
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
# 关闭从OpenMV Cam端到IDE的帧缓冲连接。
#
# 当以较高的质量手动压缩jpeg图像时,需要执行此操作。
# 以便如果JPEG图像太大而无法容纳OpenMV的IDE JPEG帧缓冲区,
# 则OpenMV Cam不会尝试使用回退机制将其流式传输到IDE。
omv.disable_fb(True)
# 上面的RPC库安装在您的OpenMV Cam上,并提供了多个类,
# 可通过USB或WIFI控制您的OpenMV Cam。
################################################################
# 选择你想要控制的OpenMV摄像头的接口。
################################################################
# 取消注释以下行以设置OpenMV Cam,以控制USB VCP。
#
interface = rpc.rpc_usb_vcp_slave()
# 取消下面的注释来设置你的OpenMV摄像头来控制WiFi。
#
# * ssid - 要连接的WiFi网络。
# * ssid_key - WiFi网络密码。
# * ssid_security - WiFi安全性。
# * port - 用于将流量路由到的端口。
# * mode - 常规或接入点模式。
# * static_ip - 如果不是None,则为一个元组(IP地址,子网掩码,网关,DNS地址)。
#
# interface = rpc.rpc_wifi_slave(ssid="",
# ssid_key="",
# ssid_security=network.WINC.WPA_PSK,
# port=0x1DBA,
# mode=network.WINC.MODE_STA,
# static_ip=None)
################################################################
# 回调
################################################################
# 这是由interface.stream_writer()反复调用。
def stream_generator_cb():
return sensor.snapshot().compress(quality=90).bytearray()
# 将stream_generator_cb生成的bytes()流传输到主设备。
def jpeg_image_stream_cb():
interface.stream_writer(stream_generator_cb)
# 调用时设置像素格式和帧大小,然后安排帧流传输在RPC调用完成之后开始。
#
# data是一个pixformat字符串和framesize字符串。
def jpeg_image_stream(data):
pixformat, framesize = bytes(data).decode().split(",")
sensor.set_pixformat(eval(pixformat))
sensor.set_framesize(eval(framesize))
interface.schedule_callback(jpeg_image_stream_cb)
return bytes()
# 添加回调。
interface.register_callback(jpeg_image_stream)
# 一旦所有的回调都被添加,我们就可以开始处理远程事件。
# loop()不返回。
interface.loop()