Sadržaj:
- Korak 1: Nacrtajte pravokutnik na prepoznatom objektu
- Korak 2: Nacrtajte putanju na kojoj se objekt premjestio
- Korak 3: Integriranje oba koda
Video: Praćenje objekata Opencv: 3 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
Otkrivanje pokretnih objekata tehnika je koja se koristi u računalnom vidu i obradi slike. Više uzastopnih kadrova iz videozapisa uspoređuje se različitim metodama kako bi se utvrdilo je li otkriven neki pokretni objekt.
Otkrivanje pokretnih objekata koristilo se za širok raspon primjena kao što su video nadzor, prepoznavanje aktivnosti, nadzor stanja cesta, sigurnost zračnih luka, nadzor zaštite uz morsku granicu itd.
Otkrivanje pokretnih objekata prepoznaje fizičko kretanje objekta na određenom mjestu ili području. [2] Djelovanjem segmentacije među pokretnim objektima i stacionarnim područjem ili regijom, kretanje pokretnih objekata moglo bi se pratiti i na taj način kasnije analizirati. Da biste to postigli, smatrajte da je video struktura izgrađena na pojedinačnim kadrovima. Otkrivanje pokretnih objekata je pronalaženje pokretnih ciljeva u prvom planu, bilo u svakom video kadru, bilo samo kada se pokretni cilj prikazuje prvi put u videu.
Koristit ću Opnecv i Python kombinaciju za otkrivanje i praćenje objekata na temelju boje
Korak 1: Nacrtajte pravokutnik na prepoznatom objektu
ako vaše računalo nema python ili opencv, slijedite upute u nastavku
evo python koda:
uvoz cv2import numpy kao np
cap = cv2. VideoCapture (0)
dok je istina:
_, frame = cap.read () hsv = cv2.cvtColor (okvir, cv2. COLOR_BGR2HSV)
donji_žuti = np.mat ([20, 110, 110])
gornja_žuta = np.mat ([40, 255, 255])
žuta_maska = cv2.inRange (hsv, donji_žuti, gornji_žuti)
(_, konture, _) = cv2.findContours (žuta_maska, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
za konture u konturama:
area = cv2.contourArea (kontura)
ako (područje> 800):
x, y, w, h = cv2.boundingRect (kontura) okvir = cv2.pravokutnik (okvir, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("praćenje", okvir)
k = cv2.čekajteKljuč (5) & 0XFF
ako je k == 27: prekid
cv2.destroyAllWindows ()
cap.release ()
Korak 2: Nacrtajte putanju na kojoj se objekt premjestio
za praćenje putanje:
za i u rasponu (1, len (središnje točke)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt ((((središnje_točke [i - 1] [0] - središnje_točke [0]) ** 2) + ((središnje_točke [i - 1] [1] - središnje_točke [1]) ** 2)) <= 50: cv2.line (okvir, središnje_točke [i - 1], središnje_točke , (b, g, r), 4)
Korak 3: Integriranje oba koda
Idem integrirati oba koda
import cv2import numpy kao np uvoz random iz zbirki deque uvoz
cap = cv2. VideoCapture (1)
# Za praćenje svih točaka gdje je objekt posjetio center_points = deque ()
dok je istina:
# Očitavanje i okretanje okvira _, okvir = cap.read () okvir = cv2.flip (okvir, 1)
# Malo zamaglite okvir
blur_frame = cv2. GaussianBlur (okvir, (7, 7), 0)
# Pretvorite iz BGR u HSV format boje
hsv = cv2.cvtBoja (okvir zamućenja, cv2. COLOR_BGR2HSV)
# Definirajte donji i gornji raspon hsv boje za otkrivanje. Ovdje plavo
donje_plavo = np.mat ([100, 50, 50]) gornje_plavo = np.polje ([140, 255, 255]) maska = cv2.inRange (hsv, donje_plavo, gornje_plavo)
# Napravite eliptično jezgro
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Otvaranje (erozija praćena širenjem)
mask = cv2.morphologyEx (maska, cv2. MORPH_OPEN, kernel)
# Pronađite sve konture
konture, hijerarhija = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
ako je len (konture)> 0:
# Pronađite najveću konturu najveća_kontura = max (konture, ključ = cv2.contourArea)
# Pronađite središte konture i nacrtajte ispunjeni krug
trenuci = cv2.momenti (najveći_kontur) centar_konture = (int (trenuci ['m10'] / momenti ['m00']), int (trenuci ['m01'] / momenti ['m00'])) cv2.circle (okvir, centar_konture, 5, (0, 0, 255), -1)
# Povežite konturu s krugom
elipsa = cv2.fitElipsa (najveći_kontura) cv2.ellipse (okvir, elipsa, (0, 255, 255), 2)
# Spremite središte konture tako da povučemo liniju koja je prati
center_points.appendleft (centre_of_contour)
# Nacrtajte liniju od središnjih točaka konture
za i u rasponu (1, len (središnje_točke)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt ((((središnje_točke [i - 1] [0] - središnje_točke [0]) ** 2) + ((središnje_točke [i - 1] [1] - središnje_točke [1]) ** 2)) <= 50: cv2.line (okvir, središnje_točke [i - 1], središnje_točke , (b, g, r), 4)
cv2.imshow ('izvornik', okvir)
cv2.imshow ('maska', maska)
k = cv2.čekajteKljuč (5) & 0xFF
ako je k == 27: prekid
cv2.destroyAllWindows ()
cap.release ()
Preporučeni:
Micro: bitni MU senzor vida - praćenje objekata: 7 koraka
Micro: bitni MU senzor vida - praćenje objekata: Dakle, u ovom uputstvu počet ćemo programirati Pametni automobil koji smo izgradili u ovom uputstvu i na koji smo instalirali senzor vida MU u ovom instruktoru. Programirat ćemo mikro: bit s nekim jednostavnim praćenjem objekata, pa
Praćenje objekata na temelju otkrivanja boje: 10 koraka
Praćenje objekata temeljenih na otkrivanju boja: Priča Napravio sam ovaj projekt kako bih naučio obradu slika pomoću Raspberry PI i otvoriti životopis. Kako bih ovaj projekt učinio zanimljivijim, upotrijebio sam dva SG90 servo motora i na njega montirao kameru. Jedan motor za kretanje vodoravno, a drugi motor za okomito kretanje
Raspberry Pi - Autonomni Mars Rover s OpenCV praćenjem objekata: 7 koraka (sa slikama)
Raspberry Pi - Autonomni Mars Rover s OpenCV praćenjem objekata: Pokreće ga Raspberry Pi 3, prepoznavanje otvorenih CV objekata, ultrazvučni senzori i istosmjerni motori. Ovaj rover može pratiti svaki objekt za koji je osposobljen i kretati se po bilo kojem terenu
Klizač kamere za praćenje objekata s rotacijskom osi. 3D ispisano i ugrađeno na RoboClaw DC kontroleru motora i Arduinu: 5 koraka (sa slikama)
Klizač kamere za praćenje objekata s rotacijskom osi. 3D ispisano i izgrađeno na RoboClaw DC motornom kontroleru i Arduinu: Ovaj projekt bio je jedan od mojih omiljenih projekata otkad sam spojio svoj interes za snimanje videa s DIY. Uvijek sam gledao i želio oponašati one filmske kadrove u filmovima gdje se kamera pomiče po ekranu dok se pomiče kako bi pratila
Praćenje objekata - Upravljanje nosačem kamere: 4 koraka
Praćenje objekata - Kontrola montiranja kamere: Pozdrav svima, U ovom Instructable -u ću vam pokazati napredak postignut za moj Project Object Tracking Project. Ovdje možete pronaći prethodni Instructable: https://www.instructables.com/id/Object-Tracking/ a ovdje možete pronaći youtube popise pjesama sa svim t