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



    • import sensor, image, time, math
      from pyb import UART
      import lcd
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA2) # High Res!
      sensor.set_windowing((640, 200)) # V Res of 80 == less work (40 for 2X the speed).
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False)  # 必须关闭此功能,以防止图像冲洗…
      sensor.set_auto_whitebal(False)  # 必须关闭此功能,以防止图像冲洗…
      clock = time.clock()
      uart = UART(3, 9600)
      # 条形码检测可以在OpenMV Cam的OV7725相机模块的640x480分辨率下运行。
      # 条码检测也将在RGB565模式下工作,但分辨率较低。 也就是说,
      # 条形码检测需要更高的分辨率才能正常工作,因此应始终以640x480的灰度运行。
      lcd.init()
      def barcode_name(code):
          if(code.type() == image.EAN2):
              return "EAN2"
          if(code.type() == image.EAN5):
              return "EAN5"
          if(code.type() == image.EAN8):
              return "EAN8"
          if(code.type() == image.UPCE):
              return "UPCE"
          if(code.type() == image.ISBN10):
              return "ISBN10"
          if(code.type() == image.UPCA):
              return "UPCA"
          if(code.type() == image.EAN13):
              return "EAN13"
          if(code.type() == image.ISBN13):
              return "ISBN13"
          if(code.type() == image.I25):
              return "I25"
          if(code.type() == image.DATABAR):
              return "DATABAR"
          if(code.type() == image.DATABAR_EXP):
              return "DATABAR_EXP"
          if(code.type() == image.CODABAR):
              return "CODABAR"
          if(code.type() == image.CODE39):
              return "CODE39"
          if(code.type() == image.PDF417):
              return "PDF417"
          if(code.type() == image.CODE93):
              return "CODE93"
          if(code.type() == image.CODE128):
              return "CODE128"
      
      while(True):
          clock.tick()
          img = sensor.snapshot()
          codes = img.find_barcodes() 
          for code in codes:
              img.draw_rectangle(code[0:4])
              #img.draw_cross(code[5], code[6]) # cx, cy   
              x=code[5]
              print(x)
              print_args = (barcode_name(code), code.payload(), (180 * code.rotation()) / math.pi, code.quality(), clock.fps())
              print("Barcode %s, Payload \"%s\", rotation %f (degrees), quality %d, FPS %f" % print_args)
              tiaoxinma=code.payload()
              print(tiaoxinma)
              #FZ = bytearray([0x31,0x31])
              #uart.write(FZ)
              #date = bytearray([tiaoxinma])
              #uart.write(date)
              lcd.display(sensor.snapshot()) 
              img.draw_string(100,100,str(tiaoxinma),color=(0,0,0))
          if not codes:
              print("FPS %f" % clock.fps())
      


    • lcd.display(sensor.snapshot()) 改为lcd.display(img),否则每次都是显示新采集的图片。

      lcd.display(sensor.snapshot()) 的缩进也要改。否则是检测到一个码就显示一次,没检测到就不显示。