• OpenMV VSCode 扩展发布了,在插件市场直接搜索OpenMV就可以安装
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 识别色块,计算色块中心坐标移动速度?



    • 如题,请问openmv可不可以实现计算移动色块的速度的功能,我的想法是获得相邻两帧色块中心坐标的变化,计算出移动距离,再用这个距离值除以帧率的倒数,算出来速度,但是问题在于我不知道如何保存住上一帧的色块中心坐标的值,请各位帮帮我,如何解决这个问题?

      import sensor, image, time
      from pyb import UART
      import json
      threshold = [((71, 100, -70, -29, -103, 127)) ]
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time = 2000 )
      sensor.set_auto_whitebal(False)
      clock = time.clock()
      uart = UART(3, 115200)
      uart.init(115200, bits=8, parity=None, stop=1)
      while(True):
          clock.tick()
          img = sensor.snapshot()
          blob = img.find_blobs(threshold, area_threshold=300)
          if blob:
              FH = bytearray([0x2c,0x12])
              uart.write(FH)
              for b in blob:
                  img.draw_rectangle(b[0:4])
                  img.draw_cross(b[5], b[6])          
                  x = b.cx()
                  y = b.cy()
         
                  
      

      这个是我的代码,只可以实时获得色块重心坐标值,我不太懂如何存储这个值,如果解决了这个问题,我想速度可以计算出。
      或者请大佬赐教,有没有其他办法获得色块移动速度



    • 你可以用utime.ticks_ms()计算时间
      用一个全局变量存。

      上一次的坐标 = (0,0)
      上一次的时间 = utime.ticks_ms()
      
      while True:
          img = sensor.snapshot()
          blobs = img.find_blobs()
          这一次的坐标 = [blobs[0].cx(), blobs[0].cy()]
          这一次的时间 = utime.ticks_ms()
          位移差 = 这一次的坐标 - 上一次的坐标
          时间差 = 这一次的时间 - 上一次的时间
          上一次的坐标 = 这一次的坐标
          上一次的时间 = 这一次的时间
      


    • @kidswong999 openmv的IDE如何实现列表的加减乘除运算啊,实际的python可以调用numpy模块将列表转换成数组,请问这个如何运算,谢谢!!!



    • @2cbt import math



    • @kidswong999识别色块,计算色块中心坐标移动速度? 中说:

      utime.ticks_ms()
      恩恩谢谢你,问题解决啦



    • 你好,能不能把你的code贴上来借鉴一下,谢谢。