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



    •             a=(max_blob[0],max_blob[1],max_blob[2],max_blob[3])
                  
                  print(a)
      
                  for r in img.find_rects(roi=a,threshold = 10000):
                  
                      img.draw_rectangle(r.rect(), color = (255, 0, 0))
                      
                      for p in r.corners(): img.draw_circle(p[0], p[1], 5, color = (0, 255, 0))
      
      
      颜色识别后进行矩形识别,可以执行但一段时间显示memoryerror的错误提示,而且断开Openmv和电脑的连接,这是为什么?
      


    • 请提供全部的代码,否则我不能运行。



    • Blob Detection Example

      This example shows off how to use the find_blobs function to find color

      blobs in the image. This example in particular looks for dark green objects.

      import sensor, image, time

      import car

      from pid import PID

      from image import SEARCH_EX, SEARCH_DS

      You may need to tweak the above settings for tracking green things...

      Select an area in the Framebuffer to copy the color settings.

      sensor.reset() # Initialize the camera sensor.

      sensor.set_pixformat(sensor.RGB565) # use RGB565.

      sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.

      sensor.skip_frames(10) # Let new settings take affect.

      sensor.set_auto_whitebal(False) # turn this off.

      clock = time.clock() # Tracks FPS.

      For color tracking to work really well you should ideally be in a very, very,

      very, controlled enviroment where the lighting is constant...

      thresholds = [(82, 100, -31, 13, 37, 127),# 黄色
      (21, 64, 9, 125, -46, -4),#紫色
      (43, 66, 7, 49, 48, 89),#橙色
      (57, 84, -42, -3, -71, -13) #蓝色

                ]
      

      size_threshold = 2000

      x_pid = PID(p=0.5, i=1, imax=100)

      h_pid = PID(p=0.05, i=0.1, imax=50)

      def find_max(blobs):

      max_size=0
      
      for blob in blobs:
      
          if blob[2]*blob[3] > max_size:
      
              max_blob=blob
      
              max_size = blob[2]*blob[3]
      
      return max_blob
      

      while(True):

      clock.tick() # Track elapsed milliseconds between snapshots().
      
      img = sensor.snapshot() # Take a picture and return the image.
      
      blobs = img.find_blobs(thresholds)
      
      if blobs:
                  
                  max_blob = find_max(blobs)
                  
                  x_error = max_blob[5]-img.width()/2
                  
                  h_error = max_blob[2]*max_blob[3]-size_threshold
                  
                  #print("x error: ", x_error)
                  
                  img.draw_rectangle(max_blob[0:4]) # rect
                  
                  img.draw_cross(max_blob[5], max_blob[6]) # cx, cy
                  
                  a=(max_blob[0],max_blob[1],max_blob[2],max_blob[3])
                  
                  print(a)
      
                  for r in img.find_rects(roi=a,threshold = 10000):
                  
                      img.draw_rectangle(r.rect(), color = (255, 0, 0))
                      
                      for p in r.corners(): img.draw_circle(p[0], p[1], 5, color = (0, 255, 0))
                  
                  #x_output=x_pid.get_pid(x_error,1)
                  
                  #h_output=h_pid.get_pid(h_error,1)
                  
                  #print("h_output",h_output)
                  
                  #car.run(-h_output-x_output,-h_output+x_output)
                  
      
      
      else:
      
          car.run(10,-10)


    • 你把缩进改好。

      • 不要有空行
      • 每一个缩进都是一个tab,IDE会自动变成4个空格。

      我改了,就能运行了。



    • @kidswong999 是可以运行的,不过它识别色块并检测形状的时候,过一段时间会报错 (如图 ) 或者直接断开与openmv的连接
      0_1544541005879_捕获.JPG



    • 你把缩进改好。

      • 不要有空行
      • 每一个缩进都是一个tab,IDE会自动变成4个空格。

      这个难受😣