• 免费好用的星瞳AI云服务上线!简单标注,云端训练,支持OpenMV H7和OpenMV H7 Plus。可以替代edge impulse。 https://forum.singtown.com/topic/9519
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 光流中find_displacement



    • 我在看 通过mavlink实现光流的例程时发现:

      1. mainloop中有这样一段代码:
          new_img = sensor.snapshot().mean_pooled(4, 4) # 160x120 -> 40x30
          x, y, c = new_img.find_displacement(old_img)
          old_img = new_img
      

      请问上述代码中的find_displacement可以直接使用的?

      1. 当我在openmv的github上搜索这个函数是,搜到这样的提示
      # NOTE!!! You have to use a small power of 2 resolution when using
      # find_displacement(). This is because the algorithm is powered by
      # something called phase correlation which does the image comparison
      

      请问,上述You have to use a small power of 2 resolution是什么意思。

      1. send_optical_flow_packet函数中:
        struct.pack函数的第一个参数具体有什么用处,mavlink协议中不存在第一个参数啊。


    • 1.文档中关于find_displacement函数是这样描述的。
      0_1521181081790_accb31be-2b98-4a38-97c3-845d72a762a5-image.png

      new_img = sensor.snapshot().mean_pooled(4, 4) # 160x120 -> 40x30
      

      这一句是利用池化函数将图像缩小。由于内存的限制,在调用find_displacement函数之前,需要使用mean_pooled(4, 4) 函数将图像缩小。

      2.find_displacement函数通过对旧图像和新图像进行二维FFT运算并使用相位相关性进行比较。您的OpenMV只有足够的内存才能在两个64x64 FFT(或128x32,32x128等)上工作。

      参考资料:



    • 首先,非常感谢,我忘记去看这个函数库了,惭愧...
      还有,请问一下,你知道我的第三个问题吗?



    • python使用struct.pack来打包二进制。这是python标准库里的。

      如果你搜一下pack,会发现官方文档里https://docs.python.org/3/library/struct.html#format-strings:第一个参数,也就是"<qfffhhbb",是用来打包的格式:

      • <代表小端
      • q代表long long
      • f代表float
      • h代表short
      • b代表signed char

      也就是后面的数据,按照"<qfffhhbb"的格式来打包。



    • @kidswong999 OK,超级感谢