Obsah:
- Krok 1: Nakreslení obdélníku na rozpoznaný objekt
- Krok 2: Vystopujte cestu, po které se objekt přesunul
- Krok 3: Integrace obou kódů
Video: Sledování objektů Opencv: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:20
Detekce pohybujících se objektů je technika používaná při počítačovém vidění a zpracování obrazu. Několik po sobě jdoucích snímků z videa je porovnáváno různými metodami, aby se určilo, zda je detekován jakýkoli pohybující se objekt.
Detekce pohybujících se předmětů byla použita pro celou řadu aplikací, jako je video dohled, rozpoznávání aktivit, monitorování stavu vozovek, bezpečnost letišť, monitorování ochrany podél mořských hranic atd.
Detekce pohybujícího se objektu je rozpoznat fyzický pohyb objektu v daném místě nebo oblasti. [2] Působením segmentace mezi pohybujícími se objekty a stacionární oblastí nebo oblastí lze pohyb pohybujících se předmětů sledovat a tak je lze analyzovat později. Abyste toho dosáhli, zvažte, že video je struktura postavená na jednotlivých snímcích, detekce pohybujících se objektů má najít pohyblivý cíl (popředí) v popředí, a to buď v každém rámečku videa, nebo pouze tehdy, když pohybující se cíl ukazuje první výskyt ve videu.
K detekci a sledování objektů na základě barvy použiji kombinaci Opnecv a Python
Krok 1: Nakreslení obdélníku na rozpoznaný objekt
Pokud váš počítač nemá python nebo opencv, postupujte podle níže uvedených instrukcí
zde je kód pythonu:
import cv2import numpy jako np
cap = cv2. VideoCapture (0)
zatímco pravda:
_, frame = cap.read () hsv = cv2.cvtColor (frame, cv2. COLOR_BGR2HSV)
lower_yellow = np.array ([20, 110, 110])
upper_yellow = np.array ([40, 255, 255])
yellow_mask = cv2.inRange (hsv, lower_yellow, upper_yellow)
(_, kontury, _) = cv2.findContours (yellow_mask, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
pro kontury v konturách:
area = cv2.contourArea (obrys)
pokud (plocha> 800):
x, y, w, h = cv2.boundingRect (obrys) rámeček = cv2.rectangle (rámeček, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow („sledování“, rámeček)
k = cv2.waitKey (5) & 0XFF
pokud k == 27: break
cv2.destroyAllWindows ()
cap.release ()
Krok 2: Vystopujte cestu, po které se objekt přesunul
trasovat cestu:
pro i v rozsahu (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt ((((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (rámeček, středové body [i - 1], středové body , (b, g, r), 4)
Krok 3: Integrace obou kódů
Chystám se integrovat oba kódy
import cv2import numpy jako np import náhodný ze sbírek import deque
cap = cv2. VideoCapture (1)
# Chcete -li sledovat všechny body, kde objekt navštívil center_points = deque ()
zatímco pravda:
# Číst a převracet rámeček _, rámeček = cap.read () rámeček = cv2.flip (rámeček, 1)
# Trochu rozostřete rám
blur_frame = cv2. GaussianBlur (rámeček, (7, 7), 0)
# Převod z barevného formátu BGR na HSV
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Definujte dolní a horní rozsah barvy hsv, kterou chcete detekovat. Tady modrá
lower_blue = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, lower_blue, upper_blue)
# Vytvořte eliptické jádro
jádro = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Otevírací morf (eroze následovaná dilatací)
maska = cv2.morphologyEx (maska, cv2. MORPH_OPEN, jádro)
# Najděte všechny obrysy
obrysy, hierarchie = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
pokud len (obrysy)> 0:
# Najděte největší obrys největší_obrys = max (obrysy, klíč = cv2.contourArea)
# Najděte střed obrysu a nakreslete vyplněný kruh
momenty = cv2.momenty (největší_obrys) center_of_contour = (int (momenty ['m10'] / momenty ['m00']), int (momenty ['m01'] / momenty ['m00'])) cv2.circle (rám, center_of_contour, 5, (0, 0, 255), -1)
# Ohraničte obrys kruhem
elipsa = cv2.fitEllipse (největší_obrys) cv2.ellipse (rámeček, elipsa, (0, 255, 255), 2)
# Uložte střed obrysu, abychom nakreslili čáru, která jej sleduje
center_points.appendleft (centre_of_contour)
# Nakreslete čáru ze středových bodů obrysu
pro i v rozsahu (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt ((((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (rámeček, středové body [i - 1], středové body , (b, g, r), 4)
cv2.imshow ('originál', rám)
cv2.imshow ('maska', maska)
k = cv2.waitKey (5) & 0xFF
pokud k == 27: break
cv2.destroyAllWindows ()
cap.release ()
Doporučuje:
Micro: bit MU Vision Sensor - sledování objektu: 7 kroků
Micro: bit MU Vision Sensor - Object Tracking: Takže v tomto instruktážním programu začneme programovat Smart Car, které do něj zabudujeme a do kterého jsme nainstalovali senzor vidění MU. Budeme programovat mikro: trochu s jednoduchým sledováním objektů, takže
ATtiny85 Nositelné vibrační sledování aktivity Sledování a programování ATtiny85 s Arduino Uno: 4 kroky (s obrázky)
ATtiny85 Wearable Vibration Activity Tracking Watch & Programming ATtiny85 With Arduino Uno: How to make the wearable activity tracking watch? Toto je nositelný gadget navržený tak, aby vibroval, když detekuje stagnaci. Trávíte většinu času na počítači jako já? Sedíte hodiny, aniž byste si to uvědomovali? Pak je toto zařízení f
Micro: bit MU Vision Sensor - Sledování objektů: 6 kroků
Micro: bit MU Vision Sensor - Tracking Objects: Toto je můj čtvrtý průvodce senzorem vidění MU pro micro: bit. Zde si projdu, jak sledovat objekty pomocí micro: bit a zapsat souřadnice na OLED obrazovku. Ve svých dalších průvodcích jsem prošel, jak připojit micro: bit k
Sledování objektů na základě detekce barev: 10 kroků
Sledování objektů na základě detekce barev: Příběh Tento projekt jsem provedl, abych se naučil zpracování obrazu pomocí Raspberry PI a otevřeného CV. Aby byl tento projekt zajímavější, použil jsem dva servomotory SG90 a namontoval na něj kameru. Jeden motor sloužil k pohybu vodorovně a druhý motor k pohybu svisle
Sledování objektů - ovládání montáže kamery: 4 kroky
Object Tracking - Camera Mount Control: Ahoj všichni, v tomto Instructable vám ukážu pokroky dosažené v mém projektu Object Tracking Project. Zde najdete předchozí Instructable: https://www.instructables.com/id/Object-Tracking/ a zde najdete seznamy skladeb na YouTube se všemi