• 星瞳AI VISION软件内测!可以离线标注,训练,并生成OpenMV的模型。可以替代edge impulse https://forum.singtown.com/topic/8206
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 代码烧录进去脱机运行后连电脑画面就这样了



    • 0_1662377266148_屏幕截图 2022-09-05 192717啊啊.png
      ``

      # 
      #
      from pyb import Pin
      import time
      from pyb import UART
      p7 = Pin('P7', Pin.OUT_PP)#设置p_out为输出引脚
      p8 = Pin('P8', Pin.OUT_PP)#设置p_out为输出引脚
      p9 = Pin('P9', Pin.OUT_PP)#设置p_out为输出引脚
      # UART 3, and baudrate.
      uart = UART(3, 115200)
      import sensor, image, time, pyb
      import json
      
      blue_threshold   = (22, 67, 9, 127, -128, -54)#蓝色的阈值
      red_threshold   = (41, 61, 42, 127, -128, 127)#红色的阈值
      yellow_threshold   = ( 60 ,10,-15,20,30,80)#黄色的阈值
      
      
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)#320*240
      #sensor.set_framesize(sensor.VGA)
      sensor.set_windowing((280, 290))
      sensor.set_auto_gain(False)  # 必须关闭此功能,以防止图像冲洗…
      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 #寻找最大色块并返回最大色块的坐标
      def color():
          blobs0 = img.find_blobs([blue_threshold])#让蓝色色块为blob0
          blobs1 = img.find_blobs([red_threshold])#让蓝色色块为blob1
          blobs2 = img.find_blobs([yellow_threshold])#让蓝色色块为blob2
          #如果找到蓝色色块
          if blobs0:
           max_blob=find_max(blobs0)
           img.draw_rectangle(max_blob.rect())#框选最大色块
           img.draw_cross(max_blob.cx(), max_blob.cy())#在最大色块中心画十字
           data="b"
           data_out = json.dumps(set(data))#将data转化为json
           uart.write(data_out +'\n')#写到缓冲区,由arduino进行读取
           print('you send:',data_out)#写到串口监视端,让你能够看到数据
           print('蓝色')#写到串口监视端,让你能够看到数据
      
      
      
          elif blobs1:
           max_blob=find_max(blobs1)
           img.draw_rectangle(max_blob.rect())#框选最大色块
           img.draw_cross(max_blob.cx(), max_blob.cy())#在最大色块中心画十字
           data="r"
           data_out = json.dumps(set(data))
           uart.write(data_out +'\n')
           print('you send:',data_out)
           print('红色')#写到串口监视端,让你能够看到数据
           global x
           x=x+1
      
      
      
          elif blobs2:
           max_blob=find_max(blobs2)
           img.draw_rectangle(max_blob.rect())#框选最大色块
           img.draw_cross(max_blob.cx(), max_blob.cy())#在最大色块中心画十字
           data="g"
           data_out = json.dumps(set(data))
           uart.write(data_out +'\n')
           print('you send:',data_out)
           print('黄色')#写到串口监视端,让你能够看到数据
      
          else:
              print('not found')
      def erwm():
          clock.tick()
          img = sensor.snapshot()
          img.lens_corr(1.8) # 1.8的强度参数对于2.8mm镜头来说是不错的。
          for code in img.find_qrcodes():
              img.draw_rectangle(code.rect(), color = (255, 0, 0))
              bianhao=code.payload()
              print(bianhao)
              global a
              a=a+1
              print(a)
              b=int(bianhao)
              global x
              x=x+1
              if b==11:
                  p7.low()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.high()#设置p_out引脚为高
                  time.sleep_ms(3000)
                  p7.low()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.low()#设置p_out引脚为高
                  time.sleep_ms(1000)
                  print('二维码编号是11')
              elif b==12:
                  p7.low()#设置p_out引脚为高
                  p8.high()#设置p_out引脚为高
                  p9.high()#设置p_out引脚为高
                  time.sleep_ms(3000)
                  p7.low()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.low()#设置p_out引脚为高
                  print('二维码编号是12')
              elif b==21:
                  p7.high()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.low()#设置p_out引脚为高
                  time.sleep_ms(3000)
                  p7.low()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.low()#设置p_out引脚为高
                  print('二维码编号是21')
                  time.sleep_ms(1000)
              elif b==22:
                  p7.high()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.high()#设置p_out引脚为高
                  time.sleep_ms(3000)
                  p7.low()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.low()#设置p_out引脚为高
                  print('二维码编号是22')
                  time.sleep_ms(1000)
      
      a=0
      b=0
      n=0
      x=0
      y=0
      z=0
      print(a)
      p7.low()#设置p_out引脚为高
      p8.low()#设置p_out引脚为高
      p9.low()#设置p_out引脚为高
      clock.tick()
      #img = sensor.snapshot()
      #img.lens_corr(1.8) # 1.8的强度参数对于2.8mm镜头来说是不错的。
      while(1):
         if x==0:
          erwm()
         elif x==1:
          img = sensor.snapshot()
          color()
         elif x==2:
          while(1):
              erwm()
      
      
      
      ```我在电脑上画面显示是正常的  然后烧录进去 脱机运行不行    等下连接电脑就这种画面了   但是换了一个其他代码又可以正常显示画面了
      
      
      
      我在电脑上画面显示是正常的  然后烧录进去 脱机运行不行    等下连接电脑就这种画面了   但是换了一个其他代码又可以正常显示画面了
      
      
      
      我在电脑上画面显示是正常的  然后烧录进去 脱机运行不行    等下连接电脑就这种画面了   但是换了一个其他代码又可以正常显示画面了


    • sensor.set_windowing((280, 290))

      不对,超过了320,240,改成
      sensor.set_windowing((240, 240))



    • 改了代码 还是不行 还是一样的问题

      # 配送二维码
      #
      from pyb import Pin
      import time
      from pyb import UART
      p7 = Pin('P7', Pin.OUT_PP)#设置p_out为输出引脚
      p8 = Pin('P8', Pin.OUT_PP)#设置p_out为输出引脚
      p9 = Pin('P9', Pin.OUT_PP)#设置p_out为输出引脚
      # UART 3, and baudrate.
      uart = UART(3, 115200)
      import sensor, image, time, pyb
      import json
      
      blue_threshold   = (22, 67, 9, 127, -128, -54)#蓝色的阈值
      red_threshold   = (41, 61, 42, 127, -128, 127)#红色的阈值
      yellow_threshold   = ( 60 ,10,-15,20,30,80)#黄色的阈值
      
      
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)#320*240
      #sensor.set_framesize(sensor.VGA)
      sensor.set_windowing((240, 240))
      sensor.set_auto_gain(False)  # 必须关闭此功能,以防止图像冲洗…
      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 #寻找最大色块并返回最大色块的坐标
      def color():
          blobs0 = img.find_blobs([blue_threshold])#让蓝色色块为blob0
          blobs1 = img.find_blobs([red_threshold])#让蓝色色块为blob1
          blobs2 = img.find_blobs([yellow_threshold])#让蓝色色块为blob2
          #如果找到蓝色色块
          if blobs0:
           max_blob=find_max(blobs0)
           img.draw_rectangle(max_blob.rect())#框选最大色块
           img.draw_cross(max_blob.cx(), max_blob.cy())#在最大色块中心画十字
           data="b"
           data_out = json.dumps(set(data))#将data转化为json
           uart.write(data_out +'\n')#写到缓冲区,由arduino进行读取
           print('you send:',data_out)#写到串口监视端,让你能够看到数据
           print('蓝色')#写到串口监视端,让你能够看到数据
      
      
      
          elif blobs1:
           max_blob=find_max(blobs1)
           img.draw_rectangle(max_blob.rect())#框选最大色块
           img.draw_cross(max_blob.cx(), max_blob.cy())#在最大色块中心画十字
           data="r"
           data_out = json.dumps(set(data))
           uart.write(data_out +'\n')
           print('you send:',data_out)
           print('红色')#写到串口监视端,让你能够看到数据
           global x
           x=x+1
      
      
      
          elif blobs2:
           max_blob=find_max(blobs2)
           img.draw_rectangle(max_blob.rect())#框选最大色块
           img.draw_cross(max_blob.cx(), max_blob.cy())#在最大色块中心画十字
           data="g"
           data_out = json.dumps(set(data))
           uart.write(data_out +'\n')
           print('you send:',data_out)
           print('黄色')#写到串口监视端,让你能够看到数据
      
          else:
              print('not found')
      def erwm():
          clock.tick()
          img = sensor.snapshot()
          img.lens_corr(1.8) # 1.8的强度参数对于2.8mm镜头来说是不错的。
          for code in img.find_qrcodes():
              img.draw_rectangle(code.rect(), color = (255, 0, 0))
              bianhao=code.payload()
              print(bianhao)
              global a
              a=a+1
              print(a)
              b=int(bianhao)
              global x
              x=x+1
              if b==11:
                  p7.low()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.high()#设置p_out引脚为高
                  time.sleep_ms(3000)
                  p7.low()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.low()#设置p_out引脚为高
                  time.sleep_ms(1000)
                  print('二维码编号是11')
              elif b==12:
                  p7.low()#设置p_out引脚为高
                  p8.high()#设置p_out引脚为高
                  p9.high()#设置p_out引脚为高
                  time.sleep_ms(3000)
                  p7.low()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.low()#设置p_out引脚为高
                  print('二维码编号是12')
              elif b==21:
                  p7.high()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.low()#设置p_out引脚为高
                  time.sleep_ms(3000)
                  p7.low()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.low()#设置p_out引脚为高
                  print('二维码编号是21')
                  time.sleep_ms(1000)
              elif b==22:
                  p7.high()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.high()#设置p_out引脚为高
                  time.sleep_ms(3000)
                  p7.low()#设置p_out引脚为高
                  p8.low()#设置p_out引脚为高
                  p9.low()#设置p_out引脚为高
                  print('二维码编号是22')
                  time.sleep_ms(1000)
      
      a=0
      b=0
      n=0
      x=0
      y=0
      z=0
      print(a)
      p7.low()#设置p_out引脚为高
      p8.low()#设置p_out引脚为高
      p9.low()#设置p_out引脚为高
      clock.tick()
      #img = sensor.snapshot()
      #img.lens_corr(1.8) # 1.8的强度参数对于2.8mm镜头来说是不错的。
      while(1):
         if x==0:
          erwm()
         elif x==1:
          img = sensor.snapshot()
          color()
         elif x==2:
          while(1):
              erwm()
      
      
      改了代码  还是不行  还是一样的问题
      


    • 你没加 sensor.reset()