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



    • 应该怎么解决 啊大佬

      import time, sensor, image
      from image import SEARCH_EX, SEARCH_DS
      
      # Reset sensor
      sensor.reset()
      
      # Set sensor settings
      sensor.set_contrast(1)
      sensor.set_gainceiling(16)
      sensor.set_framesize(sensor.QQVGA)
      # You can set windowing to reduce the search image.
      #sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60))
      sensor.set_pixformat(sensor.GRAYSCALE)
      from pyb import UART
      uart = UART(3, 115200)
      # Load template.
      # Template should be a small (eg. 32x32 pixels) grayscale image.
      template1 = image.Image("/1.pgm")
      template2 = image.Image("/2.pgm")
      template3 = image.Image("/3.pgm")
      template4 = image.Image("/4.pgm")
      template5 = image.Image("/5.pgm")
      template6 = image.Image("/6.pgm")
      template7 = image.Image("/7.pgm")
      template8 = image.Image("/8.pgm")
      template9 = image.Image("/9.pgm")
      
      
      template14 = image.Image("/m.pgm")
      
      
      
      template18 = image.Image("/1L2.pgm")
      template19 = image.Image("/1L3.pgm")
      
      template21 = image.Image("/1R2.pgm")
      template22 = image.Image("/1R3.pgm")
      
      
      template25 = image.Image("/2L2.pgm")
      template26 = image.Image("/2L3.pgm")
      
      
      template29 = image.Image("/2R2.pgm")
      template30 = image.Image("/3L1.pgm")
      template31 = image.Image("/3L2.pgm")
      
      template33 = image.Image("/3R1.pgm")
      template34 = image.Image("/3R2.pgm")
      
      
      template37 = image.Image("/4L1.pgm")
      template38 = image.Image("/4L2.pgm")
      
      template40 = image.Image("/4R1.pgm")
      template41 = image.Image("/4R1.pgm")
      
      flag=0
      flag1=0
      
      
      
      clock = time.clock()
      
      
      # Run template matching
      while (True):
          clock.tick()
          img = sensor.snapshot()
      
      
      
          # find_template(template, threshold, [roi, step, search])
          # ROI: The region of interest tuple (x, y, w, h).
          # Step: The loop step used (y+=step, x+=step) use a bigger step to make it faster.
          # Search is either image.SEARCH_EX for exhaustive search or image.SEARCH_DS for diamond search
          #
          # Note1: ROI has to be smaller than the image and bigger than the template.
          # Note2: In diamond search, step and ROI are both ignored.
          r1 = img.find_template(template1, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r2 = img.find_template(template2, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r3 = img.find_template(template3, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r4 = img.find_template(template4, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r5 = img.find_template(template5, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r6 = img.find_template(template6, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r7 = img.find_template(template7, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r8 = img.find_template(template8, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r9 = img.find_template(template9, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
      
          
          r14= img.find_template(template14, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
      
      
      
          r18= img.find_template(template18, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r19= img.find_template(template19, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
      
          r22= img.find_template(template22, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
      
      
          r25= img.find_template(template25, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r26= img.find_template(template26, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
      
      
          r29= img.find_template(template29, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r30= img.find_template(template30, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r31= img.find_template(template31, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r33= img.find_template(template33, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
      
      
          
          r37= img.find_template(template37, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r38= img.find_template(template38, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
      
          r40= img.find_template(template40, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          r41= img.find_template(template41, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
       
          if flag1==0:
              if r14:
                  uart.write("s")
                  flag1=1
             
              
          if flag==0:
              if r1:
                  img.draw_rectangle(r1)
                  flag=1
                  uart.write("1")
      
              if r2:
                  img.draw_rectangle(r2)
                  flag=2
                  uart.write("2")
      
              if r3:
                  img.draw_rectangle(r3)
                  flag=3
                  uart.write("3")
      
              if r4:
                  img.draw_rectangle(r4)
                  flag=4
                  uart.write("4")
      
              if r5:
                  img.draw_rectangle(r5)
                  uart.write("5")
      
      
              if r6:
                  img.draw_rectangle(r6)
                  uart.write("6")
      
              if r7:
                  img.draw_rectangle(r7)
                  uart.write("7")
      
              if r8:
                   img.draw_rectangle(r8)
                   uart.write("8")
      
              if r9:
                   img.draw_rectangle(r9)
                   uart.write("9")
              
              
              
                  
      
          if flag==1:
      
              if r14:
                  if r18 or r19:
                      uart.write("l")
                  if r22:
                      uart.write("r")
                  else:
                      uart.write("m")
                      import time
                      time.sleep(2)
                      flag1=0            
              
                  
                  
          if flag==2:
              if r14:
                  if r25 or r26:
                      img.draw_rectangle("l")
                  if r29:
                      uart.write("r")
                  else:
                      uart.write("m") 
                      import time
                      time.sleep(2)
                      flag1=0
              
                  
          if flag==3:
              if r14:
                  if r30 or r31:
                      img.draw_rectangle("l")
                  if r33:
                      uart.write("r")
                  else:
                      uart.write("m") 
                      import time
                      time.sleep(2)
                      flag1=0
                  
          if flag==4:
              if r14:
                  if r37 or r38:
                      uart.write("l")
                  if r40 or r41:
                      uart.write("r")
                  else:
                      uart.write("m")
                      import time
                      time.sleep(2)
                      flag1=0 
              
      
      
      
              print(clock.fps())
      


    • 你调用那么多次,当然慢啊。



    • @kidswong999 那那您知道怎么让他变不卡吗,我看好像说是释放内存,但是怎么释放 啊



    • 调用一次就耗费一次的时间,和内存没关系。

      没有解决办法,只能减少调用的次数。