导航

    • 登录
    • 搜索
    • 版块
    • 产品
    • 教程
    • 论坛
    • 淘宝
    1. 主页
    2. fr5c
    F
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 帖子
    • 楼层
    • 最佳
    • 群组

    fr5c

    @fr5c

    0
    声望
    25
    楼层
    1197
    资料浏览
    0
    粉丝
    1
    关注
    注册时间 最后登录

    fr5c 关注

    fr5c 发布的帖子

    • RE: OpenMV H4 Plus 输出的Apritag位置信号偏差很大

      @kidswong999 改成320* 0.5和240 * 0.5,那70和71行是不是也要改啊?

      发布在 OpenMV Cam
      F
      fr5c
    • RE: OpenMV H4 Plus 输出的Apritag位置信号偏差很大

      @kidswong999 0_1602847133710_11111.png
      apritag明显不在中间,输出的x的值约等于0,这偏差这么大
      什么原因,我买了几块板子都是这样。

      发布在 OpenMV Cam
      F
      fr5c
    • RE: OpenMV H4 Plus 输出的Apritag位置信号偏差很大

      @kidswong999

      请在这里粘贴代码![0_1602846716937_微信图片_20201016191141.png](正在上传 100%) 
      ```就是运行代码,您这偏差这么大,什么情况?我买了几块这样的板子,都是这样的
      发布在 OpenMV Cam
      F
      fr5c
    • RE: OpenMV H4 Plus 输出的Apritag位置信号偏差很大
      import sensor, image, time,mjpeg, math,pyb,tv
      from struct import pack , unpack
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False)
      sensor.set_auto_whitebal(False)
      tv.init()
      tv.channel(8)
      clock = time.clock()
      uart = pyb.UART(3, 115200, timeout_char = 1000)
      packet_sequence = 0
      flag = False
      n = 0;
      def checksum(data, extra):
          output = 0xFFFF
          for i in range(len(data)):
              tmp = data[i] ^ (output & 0xFF)
              tmp = (tmp ^ (tmp << 4)) & 0xFF
              output = ((output >> 8) ^ (tmp << 8) ^ (tmp << 3) ^ (tmp >> 4)) & 0xFFFF
          tmp = extra ^ (output & 0xFF)
          tmp = (tmp ^ (tmp << 4)) & 0xFF
          output = ((output >> 8) ^ (tmp << 8) ^ (tmp << 3) ^ (tmp >> 4)) & 0xFFFF
          return output
      def set_position_target_local_ned_send(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
          seq = 0xb
          global packet_sequence
          tmp=pack("<5BIfffffffffffHBBB",0x35,packet_sequence,target_system, target_component,0x54,time_boot_ms,x,y,z,vx,vy,vz,afx, afy, afz, yaw, yaw_rate,type_mask,0, 0, coordinate_frame)
          crc = checksum(tmp,143)
          tmp= pack("<b58sh",0xfe,tmp,crc)
          packet_sequence += 1
          uart.write(tmp)
      def command_long_send( target_system, target_component,  yaw):
          sign = 1
          if yaw<0:
               sign=-1
               yaw=-yaw
          seq = 0xe
          global packet_sequence
          tmp=pack("<5BfffffffHBBB",0x21,seq,target_system, target_component,0x4c,yaw,0,sign,1,0,0,0,0x73,0, 0)
          crc = checksum(tmp,152)
          tmp= pack("<b38sh",0xfe,tmp,crc)
          packet_sequence += 1
          uart.write(tmp)
      def data_encode(x,y,z,roll,pitch,yaw):
          global flag
          flag = not flag
          if flag:
              set_position_target_local_ned_send(
                            0,
                            0xff,
                            0,
                            8,
                            0xdf8,
                            x,y,z,
                            roll,pitch,yaw,
                            0, 0, 0,
                            0, 0.9)
          else:
              if yaw>180:
                  yaw=yaw-360
              if yaw >5:
                  yaw = 5
              elif yaw<-5:
                  yaw = -5
              else:
                  yaw = 0
              command_long_send( 0xff, 0,  yaw)
      f_x = (2.8 / 3.6736) * 160
      f_y = (2.8 / 2.7384) * 120
      c_x = 160 * 0.5
      c_y = 120 * 0.5
      Depth = 10000000
      tag_families = 0
      tag_families |= image.TAG36H11
      m = mjpeg.Mjpeg("example.mjpeg")
      def family_name(tag):
          if(tag.family() == image.TAG36H11):
              return 112
      valid_tag_ids = {
                        0 : 432,
                        1 : 144,
                        2 : 48,
                      }
      def degrees(radians):
          return (180 * radians) / math.pi
      while(True):
          clock.tick()
          img = sensor.snapshot()
          n = n + 1
          apriltagInfor = img.find_apriltags(families=tag_families,fx=f_x, fy=f_y, cx=c_x, cy=c_y)
          x = 0
          y = 0
          z = 0
          xdegrees = 0
          ydegreess = 0
          zdegreess = 0
          num = len(apriltagInfor)
          idMax = 1000
          iSigned = 0
          DepthMin = 100000
          if num > 0:
              for tagMax in apriltagInfor:
                  ID = tagMax.id()
                  if ID == 0:
                      Depth0 = tagMax.z_translation()*(-512.4)
                      if DepthMin > Depth0:
                         DepthMin = Depth0
                         idMax = 0
                  elif ID == 1:
                      Depth1 = tagMax.z_translation() * (-165.5)
                      #print("D=%f"%Depth1)
                      if DepthMin > Depth1:
                          DepthMin = Depth1
                          idMax = 1
                  elif ID == 2:
                      Depth2 = tagMax.z_translation() * (-53.3)
                      #Depth3 = tagMax.x_translation() * (1)
                      #Depth4 = tagMax.y_translation() * (1)
                      #print("x=%f"%Depth3)
                      #print("y=%f"%Depth4)
                      if DepthMin > Depth2:
                          DepthMin = Depth2
                          idMax = 2
          if (DepthMin - Depth > 200 or Depth > DepthMin):
              Depth = DepthMin
          if num > 0:
              for tag in apriltagInfor:
                  ID = tag.id()
                  if Depth > 3000:
                      if ID == 0:
                          img.draw_rectangle(tag.rect(), color = (255, 0, 0))
                          img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0))
                          x = tag.x_translation() * (-104.9)#-180
                          y = tag.y_translation() * (-108.7)#-190.3
                          z = tag.z_translation() * (-512.4)#-259.9
                          xdegrees  = degrees(tag.x_rotation())
                          ydegreess = degrees(tag.y_rotation())
                          zdegreess = degrees(tag.z_rotation())
                          data_encode(x,y,z,xdegrees,ydegreess,zdegreess)
                          print_args = (x, y, z, \
                              degrees(tag.x_rotation()), degrees(tag.y_rotation()), degrees(tag.z_rotation()))
                      else:
                          img.draw_rectangle(tag.rect(), color = (0, 255, 0))
                          img.draw_cross(tag.cx(), tag.cy(), color = (0, 0, 255))
                  elif(Depth <= 3000) and (Depth > 800):
                      if ID == 1:
                          img.draw_rectangle(tag.rect(), color = (255, 0, 0))
                          img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0))
                          x = tag.x_translation() * (-33.4)#-180
                          y = tag.y_translation() * (-36.5)#-86.6
                          z = tag.z_translation() * (-165.5)#104
                          xdegrees  = degrees(tag.x_rotation())
                          ydegreess = degrees(tag.y_rotation())
                          zdegreess = degrees(tag.z_rotation())
                          data_encode(x,y,z,xdegrees,ydegreess,zdegreess)
                          print_args = (x, y, z, \
                              degrees(tag.x_rotation()), degrees(tag.y_rotation()), degrees(tag.z_rotation()))
                      else:
                          img.draw_rectangle(tag.rect(), color = (0, 255, 0))
                          img.draw_cross(tag.cx(), tag.cy(), color = (0, 0, 255))
                  elif(Depth <= 800):
                     if ID == 2:
                         img.draw_rectangle(tag.rect(), color = (255, 0, 0))
                         img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0))
                         x = tag.x_translation() * (-11.6)#-180
                         y = tag.y_translation() * (-11.8)#-190.3
                         z = tag.z_translation() * (-53.3)#-28.9
                         xdegrees  = degrees(tag.x_rotation())
                         ydegreess = degrees(tag.y_rotation())
                         zdegreess = degrees(tag.z_rotation())
                         data_encode(x,y,z,xdegrees,ydegreess,zdegreess)
                         print_args = (x, y, z, \
                             degrees(tag.x_rotation()), degrees(tag.y_rotation()), degrees(tag.z_rotation()))
                     else:
                         img.draw_rectangle(tag.rect(), color = (0, 255, 0))
                         img.draw_cross(tag.cx(), tag.cy(), color = (0, 0, 255))
          tv.display(img)
          if n <=10000:
              m.add_frame(img)
              if n == 10000:
                  m.close(clock.fps())
          #print("n = %d"%n)
          #print(clock.fps())
      
      输出的位置信息和实际的位置信息偏差很大
      
      发布在 OpenMV Cam
      F
      fr5c
    • OpenMV H4 Plus 速度问题

      使用OpenMV H4 Plus,QVGA图片,识别Apriltag,帧率很慢,大概只有1秒只有5帧左右,怎样提高识别帧率?

      发布在 OpenMV Cam
      F
      fr5c
    • OpenMV H4 Plus 输出的Apritag位置信号偏差很大

      0_1600070155067_关于雇一个负压0.jpg
      上图红色框分别是识别到的Apritag,及他输出的x,感觉x和实际Apritag在图像中的位置偏差很大啊

      发布在 OpenMV Cam
      F
      fr5c
    • OV7725和OV5640 这两个上面的参数是一样的吗?

      0_1599888854122_阿里旺旺图片20200912133334.jpg

      发布在 OpenMV Cam
      F
      fr5c
    • RE: OpenMV上的串口TX和RX和哪些pin是连在一起的啊?我想使用线把TX和RX与其他设备的RX和TX相连

      @fr5c USB接口的TX和RX,说错了,是usb不是串口

      发布在 OpenMV Cam
      F
      fr5c
    • OpenMV上的串口TX和RX和哪些pin是连在一起的啊?我想使用线把TX和RX与其他设备的RX和TX相连

      OpenMV上的串口TX和RX和哪些pin是连在一起的啊?我想使用线把TX和RX与其他设备的RX和TX相连

      发布在 OpenMV Cam
      F
      fr5c
    • 无线图传扩展版为啥使用别人的接收器就接收不了图像?

      0_1596254758380_841520e2-0348-4dba-ad10-4ea2c5796bf3-image.png ,这是别人的接收器的参数,为啥接收不了啊?

      发布在 OpenMV Cam
      F
      fr5c