automatic_rgb565_color_tracking.py

# Questo lavoro è concesso in licenza MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tutti i diritti riservati.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Esempio di tracciamento automatico del colore RGB565
#
# Questo esempio mostra il tracciamento automatico di un singolo colore RGB565 utilizzando la OpenMV Cam.

import csi
import time

print("Letting auto algorithms run. Don't put anything in front of the camera!")

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000)
csi0.auto_gain(False)  # deve essere disattivato per il tracciamento del colore
csi0.auto_whitebal(False)  # deve essere disattivato per il tracciamento del colore
clock = time.clock()

# Catturare le soglie di colore di qualsiasi cosa si trovi al centro dell'immagine.
r = [(320 // 2) - (50 // 2), (240 // 2) - (50 // 2), 50, 50]  # 50x50 al centro del QVGA.

print(
    "Auto algorithms done. Hold the object you want to track in front of the camera in the box."
)
print(
    "MAKE SURE THE COLOR OF THE OBJECT YOU WANT TO TRACK IS FULLY ENCLOSED BY THE BOX!"
)
for i in range(60):
    img = csi0.snapshot()
    img.draw_rectangle(r)

print("Learning thresholds...")
threshold = [50, 50, 0, 0, 0, 0]  # Valori medi L, A, B.
for i in range(60):
    img = csi0.snapshot()
    hist = img.get_histogram(roi=r)
    lo = hist.get_percentile(
        0.01
    )  # Ottenere la CDF dell'istogramma nell'intervallo dell'1% (REGOLARE SE NECESSARIO)!
    hi = hist.get_percentile(
        0.99
    )  # Ottenere la CDF dell'istogramma nell'intervallo del 99% (REGOLARE SE NECESSARIO)!
    # Media dei valori percentili.
    threshold[0] = (threshold[0] + lo.l_value) // 2
    threshold[1] = (threshold[1] + hi.l_value) // 2
    threshold[2] = (threshold[2] + lo.a_value) // 2
    threshold[3] = (threshold[3] + hi.a_value) // 2
    threshold[4] = (threshold[4] + lo.b_value) // 2
    threshold[5] = (threshold[5] + hi.b_value) // 2
    for blob in img.find_blobs(
        [threshold], pixels_threshold=100, area_threshold=100, merge=True, margin=10
    ):
        img.draw_detection(blob)
        img.draw_rectangle(r)

print("Thresholds learned...")
print("Tracking colors...")

while True:
    clock.tick()
    img = csi0.snapshot()
    for blob in img.find_blobs(
        [threshold], pixels_threshold=100, area_threshold=100, merge=True, margin=10
    ):
        img.draw_detection(blob)
    print(clock.fps())

results matching ""

    No results matching ""