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



    • # Untitled - By: Dell - 周四 9月 3 2020
      
      import sensor, image, time
      from pyb import Pin, Timer,LED
      import math
      
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.VGA)
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(True) # must be turned off for color tracking
      sensor.set_auto_whitebal(True) # must be turned off for color tracking
      clock = time.clock()
      
      blue_led  = LED(3)
      red_led = LED(1)
      
      ROI = (200,80,240,280)     # 定义感兴趣范围
      MY_AREA=ROI
      
      def tick1(timer):
          red_led.toggle()
          img = sensor.snapshot()
          img.draw_rectangle(MY_AREA)
      
      tim = Timer(2, freq=0.2)      # 使用定时器2创建定时器对象-以1Hz触发
      
      tim.callback(tick1)
      
      #tim.callback(lambda t:tick())          # 将回调设置为tick函数
      
      while (True):
          img = sensor.snapshot()
          img.draw_rectangle(MY_AREA)
          time.sleep(10)
      
      


    • 原因:中断服务函数里不应该有新增变量。
      参考:https://docs.singtown.com/micropython/zh/latest/openmvcam/reference/isr_rules.html

      解决办法:中断服务函数应该尽量短,不应该有采集图像和处理图像。

      可以运行的代码:

      import sensor, image, time
      from pyb import Pin, Timer,LED
      import math
      
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.VGA)
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(True) # must be turned off for color tracking
      sensor.set_auto_whitebal(True) # must be turned off for color tracking
      clock = time.clock()
      
      blue_led  = LED(3)
      red_led = LED(1)
      
      ROI = (200,80,240,280)     # 定义感兴趣范围
      MY_AREA=ROI
      
      def tick1(timer):
          global red_led
          red_led.toggle()
      
      tim = Timer(2, freq=0.2)      # 使用定时器2创建定时器对象-以1Hz触发
      
      tim.callback(tick1)
      
      #tim.callback(lambda t:tick())          # 将回调设置为tick函数
      
      while (True):
          img = sensor.snapshot()
          img.draw_rectangle(MY_AREA)
          time.sleep(10)