• 免费好用的星瞳AI云服务上线!简单标注,云端训练,支持OpenMV H7和OpenMV H7 Plus。可以替代edge impulse。 https://forum.singtown.com/topic/9519
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 先颜色识别后模块匹配的程序,为什么没有图像显示?





    • 我就问一句,你为什么要循环设置sensor



    • @kidswong999先颜色识别后模块匹配的程序,为什么没有图像显示? 中说:

      循环设置sensor

      我需要先进行颜色识别,然后再把图像转成灰度图,进行数字识别,第一次用这个模块,实在不懂



    • 代码很乱,如果你hello world有图像,那就是你代码问题,慢慢检查。



    • @kidswong999 0_1521530712219_1500723796111-77c7b49e-7cec-4835-81ad-4cc252f77283-image-resized.png 我参考的这个程序啊,这个程序也是在循环里面设置sensor



    • 你把代码贴一下,我这边测试一下



    • 你看一下 来自星瞳实验室APP: 玩转星瞳论坛https://forum.singtown.com/topic/57

      把格式改一下



    • @kidswong999先颜色识别后模块匹配的程序,为什么没有图像显示? 中说:

      https://forum.singtown.com/topic/57

      #先进行颜色识别 再进行模版匹配(数字识别),当检测到绿色时将列表中的第一个数置1,红色第二个数置2,蓝色将第三个数置3
      
      import sensor, image, time #引入三个模块
      from image import SEARCH_DS,SEARCH_EX#从imgae模块引入SEARCH_EX和SEARCH_DS而不把image模块全部引入。
      
      sensor.reset()#初始化感光元件
      sensor.set_contrast(1)
      sensor.set_gainceiling(16)#适合SEARCH_EX匹配模版的最大分辨率为QQVGA
      sensor.set_framesize(sensor.QQVGA)#设置图像的大小
      
      one = image.Image("/1.pgm")#加载模版图片,模版图片应该是一个小的黑白图片
      two = image.Image("/2.pgm")
      three = image.Image("/3.pgm")
      four = image.Image("/4.pgm")
      number = [0,0,0,0]#设置一个列表,初始状态为0000
      
      green_threshold   = (52, 78, -59, -16, 17, -3)
      red_threshold = ( 15, 50, 40, 80, 20, 60)
      blue_threshold = ( 30, 50, 0, 20, -45, -20)
      yellow_threshold = ( 65, 80, -10, 10, 60, 70)#阈值
      color = [0,0,0]#设置一个列表,初始状态为000
      
      clock = time.clock() #追踪帧率
      
      while(True):
          sensor.set_pixformat(sensor.RGB565) #设置像素模式为彩色
          sensor.set_auto_whitebal(False)  #关闭白平衡。白平衡是默认开启的,在颜色识别中,需要关闭白平衡。
          clock.tick()
          img = sensor.snapshot() #截取当前图像,存放于变量img
          green_blobs = img.find_blobs([green_threshold])#找出绿色块
          if green_blobs: #如果找到了目标颜色,
              for b in green_blobs: #迭代找到的目标颜色区域
                  img.draw_cross(b[5], b[6])#在目标颜色区域的中心画十字形标记
              color[0] = 1
      
          red_blobs = img.find_blobs([red_threshold])#找出红色块
          if red_blobs: #如果找到了目标颜色,
              for b in red_blobs: #迭代找到的目标颜色区域
                  img.draw_cross(b[5], b[6])#在目标颜色区域的中心画十字形标记
              color[1] = 2
      
          blue_blobs = img.find_blobs([blue_threshold])#找出蓝色块
          if blue_blobs: #如果找到了目标颜色,
              for b in blue_blobs: #迭代找到的目标颜色区域
                  img.draw_cross(b[5], b[6])#在目标颜色区域的中心画十字形标记
              color[2] = 3
          print (color[0],color[1],color[2])
          time.sleep(600)
      
          sensor.set_pixformat(sensor.GRAYSCALE)
          img = sensor.snapshot()#截取当前图像,存放于变量img
          r1 = img.find_template(one,0.7,step=4,search=SEARCH_EX)
          #find_template(template, threshold, [roi, step, search])
          #template模版,0.7代表相似度阈值,roi=(10, 0, 60, 60)roi是进行匹配的区域(左上顶点为(10,0),长80宽60的矩形)
          if r1:
              img.draw_rectangle(r1) #画一个矩形,把匹配到的图像标记出来
              number[0] = 1
      
          r2 = img.find_template(two,0.7,step=4,search=SEARCH_EX)
          if r2:
              img.draw_rectangle(r2) #画一个矩形,把匹配到的图像标记出来
              number[1] = 2
      
          r3 = img.find_template(three,0.7,step=4,search=SEARCH_EX)
          if r3:
              img.draw_rectangle(r3) #画一个矩形,把匹配到的图像标记出来
              number[2] = 3
      
          r4 = img.find_template(four,0.7,step=4,search=SEARCH_EX)
          if r4:
              img.draw_rectangle(r4) #画一个矩形,把匹配到的图像标记出来
              number[3] = 4
          time.sleep(600)
          print (number[0],number[1],number[2],number[3])
      
          number[0] = 0
          number[1] = 0
          number[2] = 0
          number[3] = 0
          color[0] = 0
          color[1] = 0
          color[2] = 0
      


    • 你把那几个模版图片放到内存卡了?

      one = image.Image("/1.pgm")#加载模版图片,模版图片应该是一个小的黑白图片
      two = image.Image("/2.pgm")
      three = image.Image("/3.pgm")
      four = image.Image("/4.pgm")



    • @kidswong999 放了的



    • @15828422856 你每次

      img = sensor.snapshot() #截取当前图像,存放于变量img
      

      截取图片的时候,加一个循环,

      for i in range(10):
                  img = sensor.snapshot()
      

      这样就没问题了。



    • 此回复已被删除!


    • 或者,

      sensor.set_pixformat(sensor.RGB565) #设置像素模式为彩色
      sensor.skip_frames(time = 2000) 
      img = sensor.snapshot() #截取当前图像,存放于变量img
      

      每次设置后加一句

      sensor.skip_frames(time = 2000) 
      

      使图像跳过几帧,目的是使sensor的设置生效。



    • @yuan先颜色识别后模块匹配的程序,为什么没有图像显示? 中说:

      sensor.skip_frames(time = 2000)

      可以了可以了,十分感谢