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



    • 再用例程里面的代码获取目标温度,更改温度阈值后,得到的温度结果一直在变。怎么能不设置温度阈值,得到目标真实的温度值?
      也就是说怎么取消温度阈值的影响

      # Lepton获取对象温度示例
      #
      # 此示例展示了如何使用颜色跟踪获取对象的温度。
      
      # 通过关闭AGC并设置最大和最小温度范围,您可以将Lepton变成一个很棒的传感器,用于查看特定温度的物体。
      # 也就是说,FLIR Lepton是一种微物体温度测量仪,而不是热成像。
      # 因此,它需要经常重新校准(称为平场校正 -  FFC)。
      # 另外,微物体温度测量仪装置需要板载处理支持以处理温度漂移的影响,这被称为辐射测量支持。
      
      # FLIR Lepton快门注意事项:带有辐射测量和快门的FLIR Leptons会在加热重新校准时经常暂停视频。
      # 随着传感器温度的稳定,这种情况会越来越少发生。
      # 如果通过Lepton API,您可以强制重新校准。
      # 但是,建议不要这样做,因为图像会随着时间的推移而降低。
      
      # 如果您使用的是Lepton 3.5以外的LEPTON,则此脚本可能无法正常工作,
      # 因为其他Lepton没有辐射测量支持,或者它们不经常激活校准过程来处理温度变化(FLIR 2.5)。
      
      import sensor, image, time, math
      
      # Color Tracking Thresholds (Grayscale Min, Grayscale Max)
      threshold_list = [(200, 255)]
      
      # Set the target temp range here
      min_temp_in_celsius = 20.0
      max_temp_in_celsius = 35.0
      
      print("Resetting Lepton...")
      # These settings are applied on reset
      sensor.reset()
      sensor.ioctl(sensor.IOCTL_LEPTON_SET_MEASUREMENT_MODE, True)
      sensor.ioctl(sensor.IOCTL_LEPTON_SET_MEASUREMENT_RANGE, min_temp_in_celsius, max_temp_in_celsius)
      print("Lepton Res (%dx%d)" % (sensor.ioctl(sensor.IOCTL_LEPTON_GET_WIDTH),
                                    sensor.ioctl(sensor.IOCTL_LEPTON_GET_HEIGHT)))
      print("Radiometry Available: " + ("Yes" if sensor.ioctl(sensor.IOCTL_LEPTON_GET_RADIOMETRY) else "No"))
      
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.QQVGA)
      sensor.skip_frames(time=5000)
      clock = time.clock()
      
      # 只有像素数大于“pixel_threshold”且面积大于“area_threshold”的blob才会被下面的“find_blobs”返回。
      # 如果更改相机分辨率,请更改“pixels_threshold”和“area_threshold”。
      # “merge = True”合并图像中的所有重叠blob。
      
      def map_g_to_temp(g):
          return ((g * (max_temp_in_celsius - min_temp_in_celsius)) / 255.0) + min_temp_in_celsius
      
      while(True):
          clock.tick()
          img = sensor.snapshot()
          for blob in img.find_blobs(threshold_list, pixels_threshold=200, area_threshold=200, merge=True):
              img.draw_rectangle(blob.rect())
              img.draw_cross(blob.cx(), blob.cy())
              stats = img.get_statistics(thresholds=threshold_list, roi=blob.rect())
              img.draw_string(blob.x(), blob.y() - 10, "%.2f C" % map_g_to_temp(stats.mean()), mono_space=False)
          print("FPS %f - Lepton Temp: %f C" % (clock.fps(), sensor.ioctl(sensor.IOCTL_LEPTON_GET_FPA_TEMPERATURE)))
      
      


    • 就这个温度阈值
      min_temp_in_celsius = 20.0
      max_temp_in_celsius = 35.0