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



    • 在做一个有关识别apriltag的项目,想把摄像头与apriltag的距离(是个小数),向下取整后转换为十六进制,通过串口发送出去。但是每次识别到apiltag过一段时间就会报错。
      0_1681565110531_0257164f-011a-4a33-848c-46b8fc9c43a1-image.png
      报完这个错误后,点击确定,还有一个提示,如下如:
      0_1681565152619_55832e6a-45b3-42bb-a0fc-fdda0c351545-image.png
      下图是终端中提示的信息
      0_1681565185903_e11d8e16-7981-4036-991a-a25564737d8d-image.png

      import sensor, image, time, math
      from pyb import UART
      uart = UART(3, 115200)
      
      sensor.reset()
      sensor.set_framerate(0<<9|3<<11)
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA)
      sensor.skip_frames(90)#上面这些都是OpenMv里面的sensor模块
      sensor.set_auto_gain(False)#自动增益需要关掉
      sensor.set_auto_whitebal(False)#白平衡需要关掉
      clock = time.clock()
      f_x = (2.8 / 3.984) * 160
      f_y = (2.8 / 2.952) * 120
      c_x = 160 * 0.5
      c_y = 120 * 0.5
      chang=0 #初始化距离为零
      
      while(True):
          clock.tick()  #设置时钟
          img = sensor.snapshot()#捕获图片
          tag = img.find_apriltags()
          if tag:
              for tag in img.find_apriltags(fx=f_x, fy=f_y, cx=c_x, cy=c_y):#对捕获的图片进行遍历处理
                  img.draw_rectangle(tag.rect(), color = (255, 0, 0))
                  img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0))
                  print_args = (tag.x_translation(), tag.y_translation(), tag.z_translation())
                  k=20/math.sqrt(1.4484983**2+0.7051393**2+7.4014117**2)
                  s=math.sqrt(tag.x_translation()**2+tag.y_translation()**2+tag.z_translation()**2)#未知距离时的apriltag的坐标
                  length=s*k#利用成像原理数学公式计算真实长度
                  chang=length
                  distance = eval(hex(int(length)).replace('0x',''))
                  a = [0xaa,distance,0x00,0x55]
                  print(a)
      #            print("Tx: %f, Ty %f, Tz %f" % print_args)
      #            print('length: %f' %length)
                  if(length>=25):
                      uart.write(bytearray(a))
                      time.sleep_ms(1000)
                      print(a)
                  elif((length>=15)and(length<25)):
                      uart.write(bytearray(a))
                      time.sleep_ms(1000)
                      print(a)
                  elif(length<15):
                      uart.write(bytearray(a))
                      time.sleep_ms(1000)
                      print(a)
          else:
              uart.write(bytearray([0xaa,0x02,0x00,0x55]))
              print("未识别到apriltag")
              time.sleep_ms(100)
      
      

      这是程序代码,希望有了解的人可以指导一下,感激不尽!😘



    • 找了一下以往的帖子,有一个比较相近的问题,如下图:
      0_1681565468363_e269cf2f-f8d0-48ce-91a5-fd525c9537c6-image.png
      可是我也没有设计神经网络呀,很纳闷



    • 你的代码报错很清楚。一看第33行就有问题。

      distance = int(length)就完事了,不要用eval