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



    • 我的程序运行一半,突然崩了,是咋回事,代码如下:

      #小车扫码测试3
      #拍一张图先找圆,将其中某个区域复制出来,识别二维码
      # 2021-1-25  -AGV小车测试扫码
      #识别圆和二维码--2.3MM镜头,先识别圆的位置,截取小块图像,再找二维码,解决二维码在图像边缘无法识别问题
      #发送数据格式:2byte帧头,1byte帧序号,1byte帧耗时,4byte码值,2byte左右偏移,2byte上下偏移,2byte角度,1byte校验和,共15byte
      import sensor, image, time, math
      from pyb import UART
      uart = UART(3, 19200)
      uart.init(19200, bits=8, parity=None, stop=1)
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.QVGA) # can be QVGA on M7...
      sensor.skip_frames(30)
      sensor.set_auto_gain(False) # must turn this off to prevent image washout...
      clock = time.clock()
      
      while(True):
      
          #sensor.set_windowing((0,0,320, 240))
          #sensor.skip_frames(time=1)
          img = sensor.snapshot()
          clock.tick() #必须放在img = sensor.snapshot()下面
      
          for c in img.find_circles(threshold = 8000, x_margin = 10, y_margin = 10, r_margin = 10,
              r_min = 37, r_max = 41, r_step = 1):
              img.draw_circle(c.x(), c.y(), c.r(), color = (200))#找到的圆画出来
              print(c)
              img.draw_cross(160, 120, color = (250), size = 160, thickness = 1)#中心画个十字架
      
          img2 = img.copy((c.x()-c.r(),c.y()-c.r(),2*c.r(),2*c.r()),1,1,copy_to_fb=False)
          matrices = img2.find_datamatrices(effort = 500)
          print(matrices)
          for code in matrices:
              data=bytearray([0xaa,0x4d,0,0,#帧头
              int(code.payload()),int(code.payload())>>8,int(code.payload())>>16,int(code.payload())>>24,#])  #格式正确
              int(c.x()-160),int(c.x()-160)>>8,int(c.y()-120),int(c.y()-120)>>8,#])#,  #xy偏移量,可以发送
              #int(100*(int(180*code.rotation())/math.pi-180)%36000),int(100*(int(180*code.rotation())/math.pi-180)%36000)>>8])#       #角度,可发送
              int(100*((int(180*code.rotation())/math.pi-180)%360)),int(100*((int(180*code.rotation())/math.pi-180)%360))>>8])#
      
              num=bytearray([ data[(0)]+data[(1)]+data[(2)]+data[(3)]+data[(4)]+data[(5)]+data[(6)]+data[(7)]+data[(8)]+data[(9)]
                  +data[(10)]+data[(11)]+data[(12)]+data[(13)]   ])#data校验和
              uart.write(data)
              uart.write(num)
          #if not matrices:
          print("FPS %f" % clock.fps())
      

      报错如下:Traceback (most recent call last):
      File "", line 35, in
      ValueError: invalid syntax for integer with base 10
      MicroPython v1.12-omv-r1 OpenMV v3.6.9 2020-10-12; OPENMV4P-STM32H743
      Type "help()" for more information.



    • code.payload()不是数字的字符串,所以报错了。



    • 意思是我识别的的码值不是数字,不能强制转换成数字是吧



    • 对,😁