Obsah:
- Krok 1: Nakreslite obdĺžnik na rozpoznaný objekt
- Krok 2: Vystopujte cestu, po ktorej sa objekt pohyboval
- Krok 3: Integrácia oboch kódov
Video: Sledovanie objektov Opencv: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:56
Detekcia pohybujúcich sa predmetov je technika používaná pri počítačovom videní a spracovaní obrazu. Viaceré po sebe idúce snímky z videa sa porovnávajú rôznymi metódami, aby sa určilo, či je detegovaný nejaký pohybujúci sa objekt.
Detekcia pohybujúcich sa predmetov sa používa v celom rade aplikácií, ako je video sledovanie, rozpoznávanie aktivít, monitorovanie stavu vozoviek, bezpečnosť letísk, monitorovanie ochrany pozdĺž morských hraníc atď.
Detekcia pohybujúceho sa objektu je rozpoznať fyzický pohyb objektu v danom mieste alebo oblasti. [2] Účinkujúcou segmentáciou medzi pohybujúcimi sa predmetmi a stacionárnou oblasťou alebo regiónom bolo možné sledovať pohyb pohybujúcich sa objektov, a preto ich možno analyzovať neskôr. Aby sa to dosiahlo, video je štruktúra postavená na jednotlivých snímkach, pričom detekcia pohybujúceho sa objektu má nájsť pohyblivé ciele v popredí, a to buď v každom obrazovom rámci, alebo iba vtedy, keď sa pohybujúci cieľ zobrazí vo videu prvýkrát.
Na detekciu a sledovanie objektov na základe farby použijem kombináciu Opnecv a Python
Krok 1: Nakreslite obdĺžnik na rozpoznaný objekt
Ak váš počítač nemá python alebo opencv, postupujte podľa nižšie uvedených pokynov, ktoré nie je možné nainštalovať
tu je kód pythonu:
import cv2import numpy ako np
cap = cv2. VideoCapture (0)
kým je 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)
(_, kontúry, _) = cv2.findContours (yellow_mask, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
pre kontúry v kontúrach:
area = cv2.contourArea (obrys)
ak (plocha> 800):
x, y, w, h = cv2.boundingRect (obrys) rámec = cv2. obdĺžnik (rám, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow („sledovanie“, rámec)
k = cv2.waitKey (5) & 0XFF
ak k == 27: zlom
cv2.destroyAllWindows ()
cap.release ()
Krok 2: Vystopujte cestu, po ktorej sa objekt pohyboval
vystopovať cestu:
pre i v rozsahu (1, len (stredové body)): 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ám, stredové body [i - 1], stredové body , (b, g, r), 4)
Krok 3: Integrácia oboch kódov
Integrujem oba kódy
import cv2import numpy ako np import náhodný zo zbierok import deque
cap = cv2. VideoCapture (1)
# Na sledovanie všetkých miest, kde bol objekt navštívený center_points = deque ()
kým je pravda:
# Prečítajte a prevráťte rámček _, rámček = cap.read () rámček = cv2.flip (rámček, 1)
# Trochu rozmazajte rám
blur_frame = cv2. GaussianBlur (rám, (7, 7), 0)
# Previesť z formátu BGR do formátu HSV
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Definujte dolný a horný rozsah farby hsv, ktorú chcete zistiť. Tu modrá
lower_blue = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, lower_blue, upper_blue)
# Vytvorte eliptické jadro
jadro = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Úvodná morfia (erózia s následnou dilatáciou)
maska = cv2.morphologyEx (maska, cv2. MORPH_OPEN, jadro)
# Nájdite všetky kontúry
vrstevnice, hierarchia = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
ak je dĺžka (obrysy)> 0:
# Nájdite najväčší obrys najväčší_obrys = max (obrysy, kľúč = cv2.contourArea)
# Nájdite stred obrysu a nakreslite vyplnený kruh
momentu = cv2.momenty (najväčší_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)
# Obrys spojte kruhom
elipsa = cv2.fitEllipse (najväčší_obrys) cv2.ellipse (rám, elipsa, (0, 255, 255), 2)
# Uložte stred obrysu, aby sme mohli nakresliť čiaru, ktorá ho sleduje
center_points.appendleft (centre_of_contour)
# Nakreslite čiaru od stredových bodov obrysu
pre i v rozsahu (1, len (stredové body)): 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ám, stredové body [i - 1], stredové body , (b, g, r), 4)
cv2.imshow ('originál', rám)
cv2.imshow ('maska', maska)
k = cv2.waitKey (5) & 0xFF
ak k == 27: zlom
cv2.destroyAllWindows ()
cap.release ()
Odporúča:
ATtiny85 Nositeľné zariadenie na sledovanie vibrácií, sledovanie a programovanie ATtiny85 s Arduino Uno: 4 kroky (s obrázkami)
ATtiny85 Nositeľné hodinky na sledovanie vibrácií a programovanie ATtiny85 s Arduino Uno: Ako vyrobiť hodinky na sledovanie nositeľnej aktivity? Toto je nositeľný gadget navrhnutý tak, aby vibroval, keď zistí stagnáciu. Trávite väčšinu času pri počítači ako ja? Sedíte hodiny bez toho, aby ste si to uvedomovali? Potom je toto zariadenie
Mikro: bitový snímač videnia MU - sledovanie objektov: 6 krokov
Micro: bit MU Vision Sensor - Tracking Objects: Toto je môj štvrtý sprievodca k zrakovému senzoru MU pre micro: bit. Tu sa pozriem na to, ako sledovať objekty pomocou mikro: bitu a zapísať súradnice na obrazovku OLED. V mojich ďalších sprievodcoch som prešiel tým, ako pripojiť micro: bit k
Sledovanie a sledovanie malých obchodov: 9 krokov (s obrázkami)
Track & trace pre malé obchody: Jedná sa o systém, ktorý je vytvorený pre malé obchody a ktorý sa má montovať na e-bicykle alebo e-skútre pri dodávkach na krátku vzdialenosť, napríklad v pekárni, ktorá chce dodávať pečivo. Čo znamená Track and Trace? Track and Trace je systém, ktorý používa približne
Posuvník kamery na sledovanie objektov s rotačnou osou. 3D tlačené a postavené na radiči motora DC RoboClaw a Arduino: 5 krokov (s obrázkami)
Posuvník kamery na sledovanie objektov s rotačnou osou. 3D tlačené a postavené na ovládači motora RoboClaw DC a Arduino: Tento projekt je jedným z mojich obľúbených projektov, odkedy som spojil svoj záujem o tvorbu videa s vlastnými rukami. Vždy som sa pozeral na tieto filmové zábery a chcel som ich napodobniť vo filmoch, kde sa kamera pohybuje po obrazovke a pri posúvaní sleduje
Inatel - SmartHome - SH2Y - Sledovanie systému a sledovanie okolitého prostredia: 6 krokov
Inatel - SmartHome - SH2Y - Sledovanie systému a okolité prostredie: Zobrazenie monitora a systém monitora a systému Ambiente " para Smart Homes, intuitívne monitorujúce aktuálny stav a teplotu "Temperatura", "Luminosidade" e " Senzor