mirror of
https://github.com/openmv/openmv.git
synced 2025-09-26 23:09:13 +08:00
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
# TensorFlow Lite Object Detection Example
|
|
#
|
|
# This examples uses the builtin FOMO model to detect faces.
|
|
|
|
import sensor, image, time, tf, math
|
|
|
|
sensor.reset() # Reset and initialize the sensor.
|
|
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
|
|
sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240)
|
|
sensor.set_windowing((240, 240)) # Set 240x240 window.
|
|
sensor.skip_frames(time=2000) # Let the camera adjust.
|
|
|
|
min_confidence = 0.4
|
|
|
|
# Load built-in FOMO face detection model
|
|
labels, net = tf.load_builtin_model("fomo_face_detection")
|
|
|
|
# Alternatively, models can be loaded from the filesystem storage.
|
|
#net = tf.load('<object_detection_network>', load_to_fb=True)
|
|
#labels = [line.rstrip('\n') for line in open("labels.txt")]
|
|
|
|
colors = [ # Add more colors if you are detecting more than 7 types of classes at once.
|
|
(255, 0, 0),
|
|
( 0, 255, 0),
|
|
(255, 255, 0),
|
|
( 0, 0, 255),
|
|
(255, 0, 255),
|
|
( 0, 255, 255),
|
|
(255, 255, 255),
|
|
]
|
|
|
|
clock = time.clock()
|
|
while(True):
|
|
clock.tick()
|
|
|
|
img = sensor.snapshot()
|
|
|
|
# detect() returns all objects found in the image (splitted out per class already)
|
|
# we skip class index 0, as that is the background, and then draw circles of the center
|
|
# of our objects
|
|
|
|
for i, detection_list in enumerate(net.detect(img, thresholds=[(math.ceil(min_confidence * 255), 255)])):
|
|
if (i == 0): continue # background class
|
|
if (len(detection_list) == 0): continue # no detections for this class?
|
|
|
|
print("********** %s **********" % labels[i])
|
|
for d in detection_list:
|
|
[x, y, w, h] = d.rect()
|
|
center_x = math.floor(x + (w / 2))
|
|
center_y = math.floor(y + (h / 2))
|
|
print(f"x {center_x}\ty {center_y}")
|
|
img.draw_circle((center_x, center_y, 12), color=colors[i], thickness=2)
|
|
|
|
print(clock.fps(), "fps", end="\n")
|