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



    • 请教一下大大,我现在设计一个支架固定了openmv相机,目前是通过串口触发拍摄识别条形码,固定条码测试连续触发10次拍摄10张,同样位置拍摄的固定条码,可能只能识别到7次或者8次。但在实际场景中每次条码经过只触发一次,如何提高识别成功率

      循环代码

      while(True):
          #clock.tick()
      
              img = sensor.snapshot()
              codes = img.find_barcodes()
              for code in codes:
                  img.draw_rectangle(code.rect())
                  if code.payload() is not None :
                      uart3.write(code.payload())
              #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)
              if not codes:
                  print("not codes")
          else:
              img = sensor.snapshot()
      
      

      全代码

      import sensor, image, time, math
      from pyb import UART
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.VGA) # High Res!
      sensor.set_windowing((640, 80)) # V Res of 80 == less work (40 for 2X the speed).
      sensor.skip_frames(time = 2000)
      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()
      uart3 = UART(3, 19200,timeout=1000)
      uart1 = UART(1, 19200,timeout=1000)
      # Barcode detection can run at the full 640x480 resolution of your OpenMV Cam's
      # OV7725 camera module. Barcode detection will also work in RGB565 mode but at
      # a lower resolution. That said, barcode detection requires a higher resolution
      # to work well so it should always be run at 640x480 in grayscale...
      
      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.rect())
                  if code.payload() is not None :
                      uart3.write(code.payload())
              #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)
              if not codes:
                  print("not codes")
          else:
              img = sensor.snapshot()
      
      

      由于是流水线作业,条形码停留时间可能就几秒,所以不能一直拍摄等待识别到条形码再去处理,现在的解决方法是每次触发拍摄3张,识别3次,想请教一下有没有更好的方法提高识别率



    • 就没有检测到就一直检测啊。直到检测到再输出。



    • 谢谢 突然短路了😂