星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 首先我在一块地图上贴了几块tag标签,并能够确定在地图上每个标签的中心点的x,y坐标



    • 首先我在一块地图上贴了几块tag标签,并能够确定在地图上每个标签的中心点的x,y坐标,我现在想用openmv去识别地图上的标签,然后根据识别得出的不同标签代表的不同数字得到该标签的x,y坐标,再用这个x,y的坐标值进行之后的计算,现在的问题是,我不能把标签的坐标值赋值给x和y,报错说是我不能这样编写代码,下面是我的代码:0_1556358183011_NKTX5K{@~6H3TP)R9KDY%ON.png

      # AprilTags Example
      #
      # This example shows the power of the OpenMV Cam to detect April Tags
      # on the OpenMV Cam M7. The M4 versions cannot detect April Tags.
      
      import sensor, image, time, math
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA) # we run out of memory if the resolution is much bigger...
      sensor.skip_frames(30)
      sensor.set_auto_gain(False)  # must turn this off to prevent image washout...
      sensor.set_auto_whitebal(False)  # must turn this off to prevent image washout...
      clock = time.clock()
      
      while(True):
          clock.tick()
          img = sensor.snapshot()
          for tag in img.find_apriltags(families=image.TAG25H9): # defaults to TAG36H11 without "families".
              img.draw_rectangle(tag.rect(), color = (255, 0, 0))
              img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0))
              degress = 180 * tag.rotation() / math.pi
              print(tag.id(),degress)
              x = 0
              y = 0
              def tag_id(t):
                     if(t == 0):
                          x=25, y=25
                     if(t == 1):
                          x=125, y=25
                     if(t == 2):
                          x=225, y=25
              tag_id(tag.id())
              print(x, y)
      
      
      请问程序到底该怎么编写呢?
      


    • 缩进不对,一个Tab应该是4个空格,

                    if(t == 0):
      

      这里有14个空格。



    • 好像不是缩进的问题,我在pycharm上编译了相同的代码,也还是赋值不了,老师能帮我看看是不是其他的问题呢?0_1556430972201_ZANPCHKIESN}OJ7Q8AW7Y`K.png



    • 嘈点太多了,
      1,首先定义函数不需要放在for循环里,你每秒重复定义100多次这个函数没必要。
      2, x=25, y=25在python里是不能这么用的,需要两行,这也是报错的原因

      x=25
      y=25
      

      3,即使不报错逻辑也是错的,你可能不知道什么叫做全局变量,什么叫做局部变量,函数内部的局部变量x和y并不影响全局变量x和y。
      4,这个函数你应该用返回值

      def tag_id(t):
          x = 0
          y = 0
          if(t == 0):
              x=25
              y=25
          if(t == 1):
              x=125
              y=25
          if(t == 2):
              x=225
              y=25
          return x,y
      print(tag_id(0))
      print(tag_id(1))
      print(tag_id(2))
      

      5,你的缩进实在让人看不下去。。。