Sadržaj:
- Korak 1: Nacrtajte pravokutnik na prepoznatom objektu
- Korak 2: Nacrtajte putanju na kojoj se objekt premjestio
- Korak 3: Integriranje oba koda
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Detekcija pokretnih objekata tehnika je koja se koristi u računarskom 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, praćenje stanja na cestama, sigurnost aerodroma, nadzor zaštite uz morsku granicu itd.
Otkrivanje pokretnih objekata je prepoznavanje fizičkog kretanja 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, uzmite u obzir da je video struktura izgrađena na pojedinačnim kadrovima, otkrivanje pokretnih objekata je da se pronađu pokretni (i) ciljevi (i) u prvom planu, bilo u svakom video kadru ili samo kada se pokretni cilj prikaže prvi put u videu.
Koristit ću kombinaciju Opnecv i Python za otkrivanje i praćenje objekata na temelju boje
Korak 1: Nacrtajte pravokutnik na prepoznatom objektu
ako vaš računar nema python ili opencv, slijedite ove upute ispod
evo python koda:
import cv2import numpy kao np
cap = cv2. VideoCapture (0)
dok je True:
_, frame = cap.read () hsv = cv2.cvtColor (okvir, cv2. COLOR_BGR2HSV)
donji_žuti = np.mat ([20, 110, 110])
gornja_žuta = np. matrica ([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) frame = cv2.rectangle (okvir, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("praćenje", okvir)
k = cv2.waitKey (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 tačke)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt ((((središnje_tačke [i - 1] [0] - središnje_tačke [0]) ** 2) + ((središnje_tačke [i - 1] [1] - središnje_tačke [1]) ** 2)) <= 50: cv2.line (okvir, središnje_tačke [i - 1], središnje_tačke , (b, g, r), 4)
Korak 3: Integriranje oba koda
Ja ću integrirati oba koda
import cv2import numpy kao np import random from collection deque import
cap = cv2. VideoCapture (1)
# Za praćenje svih točaka gdje je objekt posjetio center_points = deque ()
dok je True:
# 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.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Definirajte donji i gornji raspon hsv boje za otkrivanje. Ovde plavo
lower_blue = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, lower_blue, upper_blue)
# Napravite eliptično jezgro
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Morph otvaranja (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']), 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)
# Sačuvajte središte konture kako bismo povukli liniju koja je prati
center_points.appendleft (centre_of_contour)
# Nacrtajte liniju od središnjih tačaka konture
za i u rasponu (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt ((((središnje_tačke [i - 1] [0] - središnje_tačke [0]) ** 2) + ((središnje_tačke [i - 1] [1] - središnje_tačke [1]) ** 2)) <= 50: cv2.line (okvir, središnje_tačke [i - 1], središnje_tačke , (b, g, r), 4)
cv2.imshow ('original', okvir)
cv2.imshow ('maska', maska)
k = cv2.waitKey (5) & 0xFF
ako je k == 27: prekid
cv2.destroyAllWindows ()
cap.release ()
Preporučuje se:
Micro: bitni MU senzor vida - praćenje objekata: 7 koraka
Micro: bitni MU senzor vida - praćenje objekata: Dakle, u ovom uputstvu ćemo započeti programiranje pametnog automobila koji gradimo u ovom uputstvu i na koji smo instalirali senzor vida MU u ovom uputstvu. Mi ćemo programirati mikro: bit s nekim jednostavnim praćenjem objekata, pa
Praćenje objekata na osnovu 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 otvorio CV. Kako bih ovaj projekt učinio zanimljivijim, upotrijebio sam dva SG90 servo motora i na njega montirao kameru. Jedan motor koji se koristi za kretanje vodoravno, a drugi motor za kretanje okomito
Raspberry Pi - Autonomni Mars Rover sa OpenCV praćenjem objekata: 7 koraka (sa slikama)
Raspberry Pi - Autonomni Mars Rover sa OpenCV praćenjem objekata: Pokreće ga Raspberry Pi 3, Open CV prepoznavanje objekata, ultrazvučni senzori i motori sa istosmjernim pogonom. Ovaj rover može pratiti bilo koji objekt za koji je obučen 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 štampano i izgrađeno na RoboClaw DC motornom kontroleru i Arduinu: Ovaj projekat je bio jedan od mojih omiljenih projekata otkad sam spojio svoj interes za snimanje videa sa „uradi sam“. 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 - Kontrola montiranja 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 plejliste sa svim t