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



    • 0_1748866136275_304f178b-66b8-4096-be92-2970884b7dd8-image.png
      #小车上
      import sensor, image, time, pyb
      from pyb import UART

      uart3 = UART(3,115200)#与车
      #uart1 = UART(3,115200)

      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      #预设大小 窗口宽度 窗口高度sss
      #VGA 640 480
      #QVGA 320 240
      #QQVGA 160 120
      #视觉中心点:(160,120)
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False) # 在进行颜色追踪时,必须关闭
      sensor.set_auto_whitebal(False) # 在进行颜色追踪时,必须关闭
      clock = time.clock()

      #a=2
      #a=''
      #o0=''
      #o1=''
      #o2=''
      #o3=''
      #o4=''

      #def find_max(blobs):
      #max_size=0
      #for blob in blobs:
      #if blob[2]*blob[3] > max_size:
      #max_blob=blob
      #max_size = blob[2]*blob[3]
      #return max_blob

      def find_max(blobs):
      max_size=0
      for blob in blobs:
      if blob.pixels() > max_size:
      max_blob = blob
      max_size = blob.pixels()
      return max_blob

      while(True):
      clock.tick()
      img = sensor.snapshot()
      #找蓝色(24, 80, -48, 60, -75, -20)(0, 47, -20, 27, -78, -6)

      blobs = img.find_blobs([(24, 80, -48, 60, -75, -20)],area_threshold=3,pixels_threshold=3)

      blobs = img.find_blobs([(70, 100, -10, 10,-10, 10)], area_threshold=3, pixels_threshold=3)
      #blobs = img.find_blobs([(24, 70, 17, 127, -10, 127)],area_threshold=3,pixels_threshold=3)
      #max_blob = find_max(blobs)
      if blobs:
          max_blob = find_max(blobs)
          #c = max_blob[0]
          x=max_blob[5]-160
          y=max_blob[6]-120
          img.draw_cross(max_blob[5], max_blob[6],(0,0,255)) # 在物体的中心点(cx,xy)画一个十字
          x_L8 = int(x) & 0x00FF #取低八位
          x_H8 = (int(x)>>8) & 0x00FF #取高八位
          y_L8 = int(y) & 0x00FF #取低八位
          y_H8 = (int(y)>>8) & 0x00FF #取高八位
          data1 = bytearray([1,x_L8,x_H8,y_L8,y_H8,0x0A])
          print("(%d,%d)" %(x,y))
          uart3.write(data1)
      else:
          print("no")
          data1 = bytearray([9,0x0A])
          uart3.write(data1)