• 星瞳AI VISION软件内测!可以离线标注,训练,并生成OpenMV的模型。可以替代edge impulse https://forum.singtown.com/topic/8206
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 模块化以后,当我想要在主函数里面打印函数的返回值的时候,图片会一卡一卡的,是运算量太大的问题吗?



    • 其中模块的代码

      import sensor, image, time,pyb
      def find_red_blob(count_flag):
          red_threshold=(1, 53, 4, 127, 127, 10)
          sensor.reset()
          sensor.set_pixformat(sensor.RGB565)
          sensor.set_framesize(sensor.QQVGA)
          sensor.skip_frames(10)
          sensor.set_auto_gain(False)
          sensor.set_auto_whitebal(False)
          clock = time.clock()
          count=0
          while(True):
              count+=1
              number=0
              img = sensor.snapshot().lens_corr(strength = 1.8, zoom = 1.0)
              red_blob1 = img.find_blobs([red_threshold],roi=(53,0,45,30))
              red_blob2 = img.find_blobs([red_threshold],roi=(0,40,45,30))
              red_blob3 = img.find_blobs([red_threshold],roi=(53,40,45,30))
              red_blob4 = img.find_blobs([red_threshold],roi=(106,40,45,30))
              red_blob5 = img.find_blobs([red_threshold],roi=(53,80,45,30))
              if red_blob1!=[]:
                  img.draw_rectangle(red_blob1[0][0:4])
                  img.draw_cross(red_blob1[0][5], red_blob1[0][6])
                  number+=1
              if red_blob2!=[]:
                  img.draw_rectangle(red_blob2[0][0:4])
                  img.draw_cross(red_blob2[0][5], red_blob2[0][6])
                  number+=1
              if red_blob3!=[]:
                  img.draw_rectangle(red_blob3[0][0:4])
                  img.draw_cross(red_blob3[0][5], red_blob3[0][6])
                  number+=1
              if red_blob4!=[]:
                  img.draw_rectangle(red_blob4[0][0:4])
                  img.draw_cross(red_blob4[0][5], red_blob4[0][6])
                  number+=1
              if red_blob5!=[]:
                  img.draw_rectangle(red_blob5[0][0:4])
                  img.draw_cross(red_blob5[0][5], red_blob5[0][6])
                  number+=1
              #print(number)
              if count>count_flag:
                  break
              return number
      主函数的代码:
      import sensor, image, time
      import black_blob,red_blob
      while(True):
          
          #print(clock.fps())              # Note: OpenMV Cam runs about half as fast when connected
          red_blob.find_red_blob(1000) 
          #black_blob.find_black_blob(1000,0,0)
          a=red_blob.find_red_blob(1000)
          #print(a)
      


    • 刚刚又发现不打印返回值也会一卡一卡的了



    • 你代码有问题。
      在find_red_blob函数,
      不管参数是多少,第一次循环都会返回。所以一直在初始化sensor,所以帧率慢。