• OpenMV VSCode 扩展发布了,在插件市场直接搜索OpenMV就可以安装
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 无线传输视频有时会卡死在等待连接,我后面想在微信小程序中插入网址引入视频流,应该怎么修改能稳定连接?



    • 我使用的openmv H7 R2 +wifi拓展板(winc1500)想要实现无线传输视频,开始运行后,WiFi连接正常,在浏览器中输入地址查看视频,当接收视频的浏览器关闭或断开后,OpenMV端的图传程序也会终止,进入等待连接模式,重新输入网址时,有时会卡死在等待连接,我后面想在微信小程序中插入网址引入视频流,应该怎么修改能稳定连接?

      '''
      OpenMV搭配ATWINC1500 WiFi模块,实现图传的例程
      
      程序本身是OpenMV原作者的编写,我只修改了一些细节,如画面参数、连接提示、图像显示帧速等
      模块需要连接至无线路由(热点),只支持2.4Ghz。另有OpenMV作为热点的程序,但会使链接他的设备无法连接互联网,所以不推荐。
      图传程序支持任何可以联网且有HTTP浏览器的设备,包括电脑、手机、平板等。
      
      图传程序可以融入任何你自己的程序中,比如我B站的智能小车,就是基于OpenMV4和WiFi模块,但要注意:
      当接收图像的浏览器关闭或断开后,OpenMV端的图传程序也会终止,进入等待连接模式
      不合理的安排,会导致你的程序卡在等待连接处
      注意程序执行时序!
      
      由于OpenMV没有websocket库,无法实现ESP32那样的网页图传+网页按钮遥控
      需要在底层加入相关支持库,或上位机有通讯程序,通过TCP/UDP透传
      
      bilibili@程欢欢的智能控制集
      20230826
      '''
      # MJPEG Streaming
      #
      # This example shows off how to do MJPEG streaming to a FIREFOX webrowser
      # Chrome, Firefox and MJpegViewer App on Android have been tested.
      # Connect to the IP address/port printed out from ifconfig to view the stream.
      
      import sensor, image, time, network, usocket, sys
      
      # 设置需要连接的WiFi信息
      SSID ='yyyjjjxxx'  # WiFi名称
      KEY  ='20021010yjx'  # WiFi密码
      
      # 服务器设置
      HOST =''  # 使用第一个可用的网络接口
      PORT = 8080  # 随机选择一个非特权端口
      
      # 初始化并配置图像传感器
      sensor.reset()
      sensor.set_framesize(sensor.QVGA)
      sensor.set_pixformat(sensor.RGB565)
      
      # 初始化无线网络模块并尝试连接到网络
      print("正在尝试连接WiFi(可能需要一些时间)...")
      wlan = network.WINC()
      wlan.connect(SSID, key=KEY, security=wlan.WPA_PSK)
      
      # 输出当前无线网络的相关信息
      wlan_inf = wlan.ifconfig()
      print('本机IP:', wlan_inf[0])
      print('子网掩码:', wlan_inf[1])
      print('网关IP:', wlan_inf[3])
      print('在浏览器中输入以下地址查看视频流:', wlan_inf[0] + ':8080')
      
      # 创建TCP服务器套接字
      s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
      
      # 绑定地址和端口,并开始监听
      s.bind((HOST, PORT))
      s.listen(5)
      
      # 设置服务器套接字为阻塞模式
      s.setblocking(True)
      
      # 定义开始视频流的函数
      def start_streaming(s):
          print ('等待客户端连接...')
          client, addr = s.accept()  # 接受客户端连接
          client.settimeout(2.0)  # 设置客户端超时时间为2秒
          print ('成功连接到:', addr[0] + ':' + str(addr[1]))
      
          # 读取客户端发送的请求(这里没有进一步处理)
          data = client.recv(1024)
      
          # 发送HTTP响应头,准备发送多部分数据
          client.send("HTTP/1.1 200 OK\r\n" \
                      "Server: OpenMV\r\n" \
                      "Content-Type: multipart/x-mixed-replace;boundary=openmv\r\n" \
                      "Cache-Control: no-cache\r\n" \
                      "Pragma: no-cache\r\n\r\n")
      
          # 初始化FPS计时器
          clock = time.clock()
      
          # 主循环:获取并发送图像
          fps = 0  # 初始化FPS值
          while True:
              clock.tick()  # 更新计时器
              frame = sensor.snapshot()  # 拍摄一帧图像
      
              # 在图像上显示当前FPS
              frame.draw_string(10, 10, 'FPS:' + str(round(fps)), scale=2, color=(255, 0, 0))
      
              # 压缩图像并准备发送
              cframe = frame.to_jpeg(quality=50, copy=True)  # 图像压缩
              header = "\r\n--openmv\r\n" \
                       "Content-Type: image/jpeg\r\n" \
                       "Content-Length:" + str(cframe.size()) + "\r\n\r\n"
              client.send(header)  # 发送HTTP分隔符和头信息
              client.send(cframe)  # 发送压缩后的图像
      
              fps = clock.fps()  # 计算FPS
              print(fps)  # 在终端输出当前FPS
      
      # 初始化lcd屏幕。
      # 注意:如果支持,可以使用 DAC 或 PWM 背光控制器来控制背光强度:
      #  lcd = display.SPIDisplay(backlight=display.DACBacklight(channel=2))
      #  lcd.backlight(25) # 25% intensity
      # 否则,将使用默认的 GPIO(开on/关off)控制器。
      # lcd = display.SPIDisplay()
      
      # 持续运行,等待客户端连接
      while True:
          try:
              start_streaming(s)
      
          except OSError as e:  # 捕捉并输出异常
              print("发生套接字错误:", e)
      
      

      关闭浏览器后显示等待连接
      0_1742473444804_1742473178322.jpg

      重新打开浏览器网址后,网址打不开,提示错误发生改变
      0_1742473479763_1742473178349.jpg



    • 浏览器网址,打开的是什么?