Example explanation 34-image\transfer\jpg\streaming\as\the_remote_device_for_your_computer OpenMV as a controlled device to transmit jpg stream to the computer

# 图像传输-作为远程设备
#
# 该脚本旨在与您计算机上的 "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()

results matching ""

    No results matching ""