• 安装星瞳实验室APP,快速收到回复。扫描二维码或者点击 https://singtown.com/app/
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 一个提问,一个帖子,标题为问题的介绍
  • 请贴出具体的代码,与报错提示。
  • 代码一定要让别人可以运行的文本,不要贴图片
  • 光流中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,超级感谢