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



    • # Untitled - By: HP - 周五 6月 7 2019
      
      import sensor,time,pyb,math,image
      import json
      from pyb import Pin,Timer,LED,UART
      
      
      uart_buf =bytearray([0x55,0x00,0x00,0x00,0x00,0xAA])
      #设置发送串口3
      uart = UART(3,9600)
      uart.init(9600,bits=8,parity=None,stop=1)
      
      x_error =0
      y_error =0
      x_Sign = 0
      y_Sign = 0
      def find_max(blobs):    #寻找最大色块函数定义
          max_pixels=0         #通过像素比较
          for blob in blobs:     #blob[0,1,2,3,4]=x,y,w,h,pixels (int)
               if blob[4]>max_pixels:
                   max_blob=blob
                   max_pixels=blob[4]
          return max_blob
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA) # we run out of memory if the resolution is much bigger...  图像像素大小QQVGA是160✖120
      sensor.skip_frames(30)
      sensor.set_auto_gain(False)  # must turn this off to prevent image washout...
      sensor.set_auto_whitebal(False)  # must turn this off to prevent image washout...
      sensor.set_auto_exposure(True)
      clock = time.clock()
      
      black = (0, 31, -34, 41, 24, -21)
      
      
      while(True):
      
         clock.tick()
      
         img=sensor.snapshot()
      
         blobs = img.find_blobs([black])
      
         if blobs:
            max_blob=find_max(blobs)
            img.draw_rectangle(max_blob.rect())
            img.draw_cross(max_blob.cx(),max_blob.cy())
            x_error = int(max_blob.cx()-img.width()/2)
            y_error = int(max_blob.cy()-img.height()/2)
         else:
            x_error = 0
            y_error = 0
      
         if x_error >= 0:
            x_Sign = 0
         if x_error <=0:
            x_Sign = 1
         if y_error >= 0:
            y_Sign = 0
         if y_error <= 0:
            y_Sign = 1
      
      x_abs=abs(x_error)
      y_abs=abs(y_error)
      print(x_Sign,x_abs,y_Sign,y_abs)
      


    • 缩进不对,导致逻辑不对。



    • 嗯嗯嗯嗯解决啦,感谢!