星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 怎么能很好的同时实现颜色识别和直线识别?



    • 进行的是红色的颜色识别,单独进行颜色识别或直线识别的话,是可以完成的,可是把代码放在一起,无论颜色识别还是直线识别都会特别乱,识别出一些不必要的东西
      0_1590736824011_微信图片_20200529151901.png

      enable_lens_corr = False
      import sensor, image, time, math,usocket, sys, json,socket,network
      
      threshold_index = 0
      thresholds = [(0, 100, 0, 127, 0, 127)]
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False) # must be turned off for color tracking
      sensor.set_auto_whitebal(False) # must be turned off for color tracking
      clock = time.clock()
      
      def find_max(blobs):
          max_size=0
          for blob in blobs:
              if blob.pixels() > max_size:
                  max_blob=blob
                  max_size = blob.pixels()
          return max_blob
          
      min_degree = 0
      max_degree = 179
      
      while(True):
       #   clock.tick()
          img = sensor.snapshot()
         # for blob in img.find_blobs(thresholds, pixels_threshold=10, area_threshold=10):
          blobs = img.find_blobs(thresholds, pixels_threshold=20, area_threshold=20, merge=True)
          if blobs:
              max_blob=find_max(blobs )
              for blob in blobs:
                  if blob.code():
                      img.draw_cross(blob.cx(), blob.cy())
                      img.draw_rectangle(blob.rect())
              if blob.cx() > img.width()/2:
                
                  print(03)
               
              elif blob.cx() < img.width()/2:
              
                  print(04)
               
              else:
                
                  print(00)
              
      
              if blob.cy() < img.height()/2:
               
                  print(01)
                
              else:
              
                  print(00)
                
              if enable_lens_corr: img.lens_corr(1.8)
              for l in img.find_lines(threshold = 1000, theta_margin = 25, rho_margin = 25):
                  if (min_degree <= l.theta()) and (l.theta() <= max_degree):
                      img.draw_line(l.line(), color = (255, 0, 0))
                      if l.x1() > img.height()/2:
               
                          print(16)
              
                      else:
              
                          print(16)
      


    • draw需要放在最后面,否则找直线会把手动画的框识别到。