mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Add lepton examples.
This commit is contained in:
parent
1ef73ff858
commit
4f0e628bb0
58
scripts/examples/27-Lepton/lepton_get_object_temp.py
Normal file
58
scripts/examples/27-Lepton/lepton_get_object_temp.py
Normal file
@ -0,0 +1,58 @@
|
||||
# Lepton Get Object Temp Example
|
||||
#
|
||||
# This example shows off how to get an object's temperature using color tracking.
|
||||
|
||||
# By turning the AGC off and setting a max and min temperature range you can make the lepton into
|
||||
# a great sensor for seeing objects of a particular temperature. That said, the FLIR lepton is a
|
||||
# microblobometer and not a thermophile. So, it needs to re-calibrate itself often (which is called
|
||||
# flat-field-correction - FFC). Additionally, microblobmeter devices require pprocessing support
|
||||
# onboard to deal with the effects of temperature drift which is called radiometry support.
|
||||
|
||||
# FLIR Lepton Shutter Note: FLIR Leptons with radiometry and a shutter will pause the video often
|
||||
# as they heatup to re-calibrate. This will happen less and less often as the sensor temperature
|
||||
# stablizes. You can force the re-calibration to not happen if you need to via the lepton API.
|
||||
# However, it is not recommended because the image will degrade overtime.
|
||||
|
||||
# If you are using a LEPTON other than the Lepton 3.5 this script may not work perfectly as other
|
||||
# leptons don't have radiometry support or they don't activate their calibration process often
|
||||
# enough to deal with temperature changes (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()
|
||||
|
||||
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
|
||||
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
|
||||
# camera resolution. "merge=True" merges all overlapping blobs in the image.
|
||||
|
||||
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)))
|
||||
66
scripts/examples/27-Lepton/lepton_get_object_temp_color.py
Normal file
66
scripts/examples/27-Lepton/lepton_get_object_temp_color.py
Normal file
@ -0,0 +1,66 @@
|
||||
# Lepton Get Object Temp Example
|
||||
#
|
||||
# This example shows off how to get an object's temperature using color tracking.
|
||||
|
||||
# By turning the AGC off and setting a max and min temperature range you can make the lepton into
|
||||
# a great sensor for seeing objects of a particular temperature. That said, the FLIR lepton is a
|
||||
# microblobometer and not a thermophile. So, it needs to re-calibrate itself often (which is called
|
||||
# flat-field-correction - FFC). Additionally, microblobmeter devices require pprocessing support
|
||||
# onboard to deal with the effects of temperature drift which is called radiometry support.
|
||||
|
||||
# FLIR Lepton Shutter Note: FLIR Leptons with radiometry and a shutter will pause the video often
|
||||
# as they heatup to re-calibrate. This will happen less and less often as the sensor temperature
|
||||
# stablizes. You can force the re-calibration to not happen if you need to via the lepton API.
|
||||
# However, it is not recommended because the image will degrade overtime.
|
||||
|
||||
# If you are using a LEPTON other than the Lepton 3.5 this script may not work perfectly as other
|
||||
# leptons don't have radiometry support or they don't activate their calibration process often
|
||||
# enough to deal with temperature changes (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()
|
||||
|
||||
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
|
||||
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
|
||||
# camera resolution. "merge=True" merges all overlapping blobs in the image.
|
||||
|
||||
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()
|
||||
blob_stats = []
|
||||
blobs = img.find_blobs(threshold_list, pixels_threshold=200, area_threshold=200, merge=True)
|
||||
# Collect stats into a list of tuples
|
||||
for blob in blobs:
|
||||
blob_stats.append((blob.x(), blob.y(), map_g_to_temp(img.get_statistics(thresholds=threshold_list,
|
||||
roi=blob.rect()).mean())))
|
||||
img.to_rainbow(color_palette=sensor.PALETTE_IRONBOW) # color it
|
||||
# Draw stuff on the colored image
|
||||
for blob in blobs:
|
||||
img.draw_rectangle(blob.rect())
|
||||
img.draw_cross(blob.cx(), blob.cy())
|
||||
for blob_stat in blob_stats:
|
||||
img.draw_string(blob_stat[0], blob_stat[1] - 10, "%.2f C" % blob_stat[2], mono_space=False)
|
||||
print("FPS %f - Lepton Temp: %f C" % (clock.fps(), sensor.ioctl(sensor.IOCTL_LEPTON_GET_FPA_TEMPERATURE)))
|
||||
@ -0,0 +1,68 @@
|
||||
# Lepton Get Object Temp Example
|
||||
#
|
||||
# This example shows off how to get an object's temperature using color tracking.
|
||||
|
||||
# By turning the AGC off and setting a max and min temperature range you can make the lepton into
|
||||
# a great sensor for seeing objects of a particular temperature. That said, the FLIR lepton is a
|
||||
# microblobometer and not a thermophile. So, it needs to re-calibrate itself often (which is called
|
||||
# flat-field-correction - FFC). Additionally, microblobmeter devices require pprocessing support
|
||||
# onboard to deal with the effects of temperature drift which is called radiometry support.
|
||||
|
||||
# FLIR Lepton Shutter Note: FLIR Leptons with radiometry and a shutter will pause the video often
|
||||
# as they heatup to re-calibrate. This will happen less and less often as the sensor temperature
|
||||
# stablizes. You can force the re-calibration to not happen if you need to via the lepton API.
|
||||
# However, it is not recommended because the image will degrade overtime.
|
||||
|
||||
# If you are using a LEPTON other than the Lepton 3.5 this script may not work perfectly as other
|
||||
# leptons don't have radiometry support or they don't activate their calibration process often
|
||||
# enough to deal with temperature changes (FLIR 2.5).
|
||||
|
||||
import sensor, image, time, math, lcd
|
||||
|
||||
# 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.LCD)
|
||||
sensor.skip_frames(time=5000)
|
||||
clock = time.clock()
|
||||
lcd.init()
|
||||
|
||||
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
|
||||
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
|
||||
# camera resolution. "merge=True" merges all overlapping blobs in the image.
|
||||
|
||||
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()
|
||||
blob_stats = []
|
||||
blobs = img.find_blobs(threshold_list, pixels_threshold=200, area_threshold=200, merge=True)
|
||||
# Collect stats into a list of tuples
|
||||
for blob in blobs:
|
||||
blob_stats.append((blob.x(), blob.y(), map_g_to_temp(img.get_statistics(thresholds=threshold_list,
|
||||
roi=blob.rect()).mean())))
|
||||
img.to_rainbow(color_palette=sensor.PALETTE_IRONBOW) # color it
|
||||
# Draw stuff on the colored image
|
||||
for blob in blobs:
|
||||
img.draw_rectangle(blob.rect())
|
||||
img.draw_cross(blob.cx(), blob.cy())
|
||||
for blob_stat in blob_stats:
|
||||
img.draw_string(blob_stat[0], blob_stat[1] - 10, "%.2f C" % blob_stat[2], mono_space=False)
|
||||
lcd.display(img)
|
||||
print("FPS %f - Lepton Temp: %f C" % (clock.fps(), sensor.ioctl(sensor.IOCTL_LEPTON_GET_FPA_TEMPERATURE)))
|
||||
60
scripts/examples/27-Lepton/lepton_get_object_temp_lcd.py
Normal file
60
scripts/examples/27-Lepton/lepton_get_object_temp_lcd.py
Normal file
@ -0,0 +1,60 @@
|
||||
# Lepton Get Object Temp Example
|
||||
#
|
||||
# This example shows off how to get an object's temperature using color tracking.
|
||||
|
||||
# By turning the AGC off and setting a max and min temperature range you can make the lepton into
|
||||
# a great sensor for seeing objects of a particular temperature. That said, the FLIR lepton is a
|
||||
# microblobometer and not a thermophile. So, it needs to re-calibrate itself often (which is called
|
||||
# flat-field-correction - FFC). Additionally, microblobmeter devices require pprocessing support
|
||||
# onboard to deal with the effects of temperature drift which is called radiometry support.
|
||||
|
||||
# FLIR Lepton Shutter Note: FLIR Leptons with radiometry and a shutter will pause the video often
|
||||
# as they heatup to re-calibrate. This will happen less and less often as the sensor temperature
|
||||
# stablizes. You can force the re-calibration to not happen if you need to via the lepton API.
|
||||
# However, it is not recommended because the image will degrade overtime.
|
||||
|
||||
# If you are using a LEPTON other than the Lepton 3.5 this script may not work perfectly as other
|
||||
# leptons don't have radiometry support or they don't activate their calibration process often
|
||||
# enough to deal with temperature changes (FLIR 2.5).
|
||||
|
||||
import sensor, image, time, math, lcd
|
||||
|
||||
# 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.LCD)
|
||||
sensor.skip_frames(time=5000)
|
||||
clock = time.clock()
|
||||
lcd.init()
|
||||
|
||||
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
|
||||
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
|
||||
# camera resolution. "merge=True" merges all overlapping blobs in the image.
|
||||
|
||||
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)
|
||||
lcd.display(img)
|
||||
print("FPS %f - Lepton Temp: %f C" % (clock.fps(), sensor.ioctl(sensor.IOCTL_LEPTON_GET_FPA_TEMPERATURE)))
|
||||
@ -0,0 +1,37 @@
|
||||
# Single Color Grayscale Blob Tracking Example
|
||||
#
|
||||
# This example shows off single color grayscale tracking using the OpenMV Cam using the FLIR LEPTON.
|
||||
|
||||
# FLIR Lepton Shutter Note: FLIR Leptons with radiometry and a shutter will pause the video often
|
||||
# as they heatup to re-calibrate. This will happen less and less often as the sensor temperature
|
||||
# stablizes. You can force the re-calibration to not happen if you need to via the lepton API.
|
||||
# However, it is not recommended because the image will degrade overtime.
|
||||
|
||||
import sensor, image, time, math
|
||||
|
||||
# Color Tracking Thresholds (Grayscale Min, Grayscale Max)
|
||||
threshold_list = [(220, 255)]
|
||||
|
||||
print("Resetting Lepton...")
|
||||
# These settings are applied on reset
|
||||
sensor.reset()
|
||||
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()
|
||||
|
||||
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
|
||||
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
|
||||
# camera resolution. "merge=True" merges all overlapping blobs in the image.
|
||||
|
||||
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(), color=127)
|
||||
img.draw_cross(blob.cx(), blob.cy(), color=127)
|
||||
print(clock.fps())
|
||||
@ -0,0 +1,39 @@
|
||||
# Single Color Grayscale Blob Tracking Example
|
||||
#
|
||||
# This example shows off single color grayscale tracking using the OpenMV Cam using the FLIR LEPTON.
|
||||
|
||||
# FLIR Lepton Shutter Note: FLIR Leptons with radiometry and a shutter will pause the video often
|
||||
# as they heatup to re-calibrate. This will happen less and less often as the sensor temperature
|
||||
# stablizes. You can force the re-calibration to not happen if you need to via the lepton API.
|
||||
# However, it is not recommended because the image will degrade overtime.
|
||||
|
||||
import sensor, image, time, math, lcd
|
||||
|
||||
# Color Tracking Thresholds (Grayscale Min, Grayscale Max)
|
||||
threshold_list = [(220, 255)]
|
||||
|
||||
print("Resetting Lepton...")
|
||||
# These settings are applied on reset
|
||||
sensor.reset()
|
||||
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.LCD)
|
||||
sensor.skip_frames(time=5000)
|
||||
clock = time.clock()
|
||||
lcd.init()
|
||||
|
||||
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
|
||||
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
|
||||
# camera resolution. "merge=True" merges all overlapping blobs in the image.
|
||||
|
||||
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(), color=127)
|
||||
img.draw_cross(blob.cx(), blob.cy(), color=127)
|
||||
lcd.display(img)
|
||||
print(clock.fps())
|
||||
@ -0,0 +1,39 @@
|
||||
# Single Color RGB565 Blob Tracking Example
|
||||
#
|
||||
# This example shows off single color RGB565 tracking using the OpenMV Cam using the FLIR LEPTON.
|
||||
|
||||
# FLIR Lepton Shutter Note: FLIR Leptons with radiometry and a shutter will pause the video often
|
||||
# as they heatup to re-calibrate. This will happen less and less often as the sensor temperature
|
||||
# stablizes. You can force the re-calibration to not happen if you need to via the lepton API.
|
||||
# However, it is not recommended because the image will degrade overtime.
|
||||
|
||||
import sensor, image, time, math
|
||||
|
||||
# Color Tracking Thresholds (L Min, L Max, A Min, A Max, B Min, B Max)
|
||||
threshold_list = [( 70, 100, -30, 40, 20, 100)]
|
||||
|
||||
print("Resetting Lepton...")
|
||||
# These settings are applied on reset
|
||||
sensor.reset()
|
||||
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"))
|
||||
# Make the color palette cool
|
||||
sensor.set_color_palette(sensor.PALETTE_IRONBOW)
|
||||
|
||||
sensor.set_pixformat(sensor.RGB565)
|
||||
sensor.set_framesize(sensor.QQVGA)
|
||||
sensor.skip_frames(time=5000)
|
||||
clock = time.clock()
|
||||
|
||||
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
|
||||
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
|
||||
# camera resolution. "merge=True" merges all overlapping blobs in the image.
|
||||
|
||||
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())
|
||||
print(clock.fps())
|
||||
@ -0,0 +1,41 @@
|
||||
# Single Color RGB565 Blob Tracking Example
|
||||
#
|
||||
# This example shows off single color RGB565 tracking using the OpenMV Cam using the FLIR LEPTON.
|
||||
|
||||
# FLIR Lepton Shutter Note: FLIR Leptons with radiometry and a shutter will pause the video often
|
||||
# as they heatup to re-calibrate. This will happen less and less often as the sensor temperature
|
||||
# stablizes. You can force the re-calibration to not happen if you need to via the lepton API.
|
||||
# However, it is not recommended because the image will degrade overtime.
|
||||
|
||||
import sensor, image, time, math, lcd
|
||||
|
||||
# Color Tracking Thresholds (L Min, L Max, A Min, A Max, B Min, B Max)
|
||||
threshold_list = [( 70, 100, -30, 40, 20, 100)]
|
||||
|
||||
print("Resetting Lepton...")
|
||||
# These settings are applied on reset
|
||||
sensor.reset()
|
||||
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"))
|
||||
# Make the color palette cool
|
||||
sensor.set_color_palette(sensor.PALETTE_IRONBOW)
|
||||
|
||||
sensor.set_pixformat(sensor.RGB565)
|
||||
sensor.set_framesize(sensor.LCD)
|
||||
sensor.skip_frames(time=5000)
|
||||
clock = time.clock()
|
||||
lcd.init()
|
||||
|
||||
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
|
||||
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
|
||||
# camera resolution. "merge=True" merges all overlapping blobs in the image.
|
||||
|
||||
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())
|
||||
lcd.display(img)
|
||||
print(clock.fps())
|
||||
@ -0,0 +1,53 @@
|
||||
# Single Color Grayscale Blob Tracking Example
|
||||
#
|
||||
# This example shows off single color grayscale tracking using the OpenMV Cam using the FLIR LEPTON.
|
||||
|
||||
# By turning the AGC off and setting a max and min temperature range you can make the lepton into
|
||||
# a great sensor for seeing objects of a particular temperature. That said, the FLIR lepton is a
|
||||
# microblobometer and not a thermophile. So, it needs to re-calibrate itself often (which is called
|
||||
# flat-field-correction - FFC). Additionally, microblobmeter devices require pprocessing support
|
||||
# onboard to deal with the effects of temperature drift which is called radiometry support.
|
||||
|
||||
# FLIR Lepton Shutter Note: FLIR Leptons with radiometry and a shutter will pause the video often
|
||||
# as they heatup to re-calibrate. This will happen less and less often as the sensor temperature
|
||||
# stablizes. You can force the re-calibration to not happen if you need to via the lepton API.
|
||||
# However, it is not recommended because the image will degrade overtime.
|
||||
|
||||
# If you are using a LEPTON other than the Lepton 3.5 this script may not work perfectly as other
|
||||
# leptons don't have radiometry support or they don't activate their calibration process often
|
||||
# enough to deal with temperature changes (FLIR 2.5).
|
||||
|
||||
import sensor, image, time, math
|
||||
|
||||
# Color Tracking Thresholds (Grayscale Min, Grayscale Max)
|
||||
threshold_list = [(220, 255)]
|
||||
|
||||
# Set the target temp range here
|
||||
min_temp_in_celsius = 20
|
||||
max_temp_in_celsius = 32
|
||||
|
||||
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()
|
||||
|
||||
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
|
||||
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
|
||||
# camera resolution. "merge=True" merges all overlapping blobs in the image.
|
||||
|
||||
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(), color=127)
|
||||
img.draw_cross(blob.cx(), blob.cy(), color=127)
|
||||
print("FPS %f - Lepton Temp: %f C" % (clock.fps(), sensor.ioctl(sensor.IOCTL_LEPTON_GET_FPA_TEMPERATURE)))
|
||||
@ -0,0 +1,55 @@
|
||||
# Single Color RGB565 Blob Tracking Example
|
||||
#
|
||||
# This example shows off single color RGB565 tracking using the OpenMV Cam using the FLIR LEPTON.
|
||||
|
||||
# By turning the AGC off and setting a max and min temperature range you can make the lepton into
|
||||
# a great sensor for seeing objects of a particular temperature. That said, the FLIR lepton is a
|
||||
# microblobometer and not a thermophile. So, it needs to re-calibrate itself often (which is called
|
||||
# flat-field-correction - FFC). Additionally, microblobmeter devices require pprocessing support
|
||||
# onboard to deal with the effects of temperature drift which is called radiometry support.
|
||||
|
||||
# FLIR Lepton Shutter Note: FLIR Leptons with radiometry and a shutter will pause the video often
|
||||
# as they heatup to re-calibrate. This will happen less and less often as the sensor temperature
|
||||
# stablizes. You can force the re-calibration to not happen if you need to via the lepton API.
|
||||
# However, it is not recommended because the image will degrade overtime.
|
||||
|
||||
# If you are using a LEPTON other than the Lepton 3.5 this script may not work perfectly as other
|
||||
# leptons don't have radiometry support or they don't activate their calibration process often
|
||||
# enough to deal with temperature changes (FLIR 2.5).
|
||||
|
||||
import sensor, image, time, math
|
||||
|
||||
# Color Tracking Thresholds (L Min, L Max, A Min, A Max, B Min, B Max)
|
||||
threshold_list = [( 70, 100, -30, 40, 20, 100)]
|
||||
|
||||
# Set the target temp range here
|
||||
min_temp_in_celsius = 20
|
||||
max_temp_in_celsius = 32
|
||||
|
||||
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"))
|
||||
# Make the color palette cool
|
||||
sensor.set_color_palette(sensor.PALETTE_IRONBOW)
|
||||
|
||||
sensor.set_pixformat(sensor.RGB565)
|
||||
sensor.set_framesize(sensor.QQVGA)
|
||||
sensor.skip_frames(time=5000)
|
||||
clock = time.clock()
|
||||
|
||||
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
|
||||
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
|
||||
# camera resolution. "merge=True" merges all overlapping blobs in the image.
|
||||
|
||||
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())
|
||||
print("FPS %f - Lepton Temp: %f C" % (clock.fps(), sensor.ioctl(sensor.IOCTL_LEPTON_GET_FPA_TEMPERATURE)))
|
||||
Loading…
Reference in New Issue
Block a user