Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:08
Odkrivanje premikajočih se predmetov je tehnika, ki se uporablja pri računalniškem vidu in obdelavi slik. Več zaporednih sličic iz videoposnetka se z različnimi metodami primerja, da se ugotovi, ali je zaznan premikajoč se predmet.
Odkrivanje premikajočih se predmetov je bilo uporabljeno za široko paleto aplikacij, kot so video nadzor, prepoznavanje dejavnosti, spremljanje stanja cest, varnost letališč, spremljanje zaščite ob morski meji itd.
Odkrivanje premikajočega se predmeta je prepoznavanje fizičnega gibanja predmeta na določenem mestu ali območju. [2] Z segmentacijo med premikajočimi se predmeti in stacionarnim območjem ali regijo je mogoče slediti gibanju premikajočih se predmetov in jih je kasneje mogoče analizirati. Da bi to dosegli, upoštevajte, da je video struktura, zgrajena na posameznih sličicah, odkrivanje premikajočih se objektov pa je iskanje premikajočih se ciljev v ospredju, bodisi v vsakem kadru videoposnetka bodisi le, ko premikajoči se cilj prikaže prvi videz v videoposnetku.
Uporabil bom kombinacijo Opnecv in Python za odkrivanje in sledenje predmetom glede na barvo
1. korak: Narišite pravokotnik na prepoznanem objektu
če vaš računalnik nima python ali opencv, sledite spodnjim navodilom
tukaj je koda python:
uvoz cv2import numpy kot np
cap = cv2. VideoCapture (0)
medtem ko je res:
_, frame = cap.read () hsv = cv2.cvtColor (okvir, cv2. COLOR_BGR2HSV)
spodnja_rumena = np. matrika ([20, 110, 110])
zgornja_rumena = matrika np ([40, 255, 255])
rumena_maska = cv2.inRange (hsv, spodnja_rumena, zgornja_rumena)
(_, konture, _) = cv2.findContours (rumena_maska, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
za konture v obrisih:
area = cv2.contourArea (kontura)
če (območje> 800):
x, y, w, h = cv2.boundingRect (kontura) okvir = cv2.rectangle (okvir, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("sledenje", okvir)
k = cv2.počakajKljuč (5) & 0XFF
če je k == 27: prelom
cv2.destroyAllWindows ()
cap.release ()
2. korak: Izsledite pot, po kateri se je predmet premaknil
za sledenje poti:
za i v razponu (1, len (središčne točke)): b = naključni.randint (230, 255) g = naključni.randint (100, 255) r = naključni.randint (100, 255), če je math.sqrt ((((središčne točke [i - 1] [0] - središčne točke [0]) ** 2) + ((središčne točke [i - 1] [1] - središčne točke [1]) ** 2)) <= 50: cv2.line (okvir, središčne_točke [i - 1], središčne_točke , (b, g, r), 4)
3. korak: Integracija obeh kod
obe kodi bom integriral
uvoz cv2import numpy kot np uvoz naključno iz zbirk za uvoz uvoz
cap = cv2. VideoCapture (1)
# Za spremljanje vseh točk, kjer je bil predmet obiskan center_points = deque ()
medtem ko je res:
# Preberi in obrni okvir _, okvir = cap.read () okvir = cv2.flip (okvir, 1)
# Malo zameglite okvir
blur_frame = cv2. GaussianBlur (okvir, (7, 7), 0)
# Pretvorite iz barvnega formata BGR v HSV
hsv = cv2.cvtColor (zamegljen_okvir, cv2. COLOR_BGR2HSV)
# Določite spodnje in zgornje območje barve hsv za zaznavanje. Tukaj modra
spodnja_modra = np. matrika ([100, 50, 50]) zgornja_modra = np. matrika ([140, 255, 255]) maska = cv2.inRange (hsv, spodnja_plava, zgornja_modra)
# Naredite eliptično jedro
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Odpiranje morfa (erozija, ki ji sledi širjenje)
mask = cv2.morphologyEx (maska, cv2. MORPH_OPEN, jedro)
# Poiščite vse obrise
konture, hierarhija = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
če je len (konture)> 0:
# Poiščite največjo konturo največji_kontur = max (konture, ključ = cv2.contourArea)
# Poiščite središče konture in narišite zapolnjen krog
trenutki = cv2.momenti (največji_kontur) center_konture = (int (trenutki ['m10'] / trenutki ['m00']), int (trenutki ['m01'] / trenutki ['m00']) cv2.krog (okvir, center_konture, 5, (0, 0, 255), -1)
# Obkrožite konturo s krogom
elipse = cv2.fitEllipse (največja_kontura) cv2.ellipse (okvir, elipsa, (0, 255, 255), 2)
# Shranite središče konture, da narišemo črto, ki ji sledi
center_points.appendleft (centre_of_contour)
# Narišite črto iz osrednjih točk konture
za i v razponu (1, len (središčne točke)): b = naključni.randint (230, 255) g = naključni.randint (100, 255) r = naključni.randint (100, 255), če je math.sqrt ((((središčne točke [i - 1] [0] - središčne točke [0]) ** 2) + ((središčne točke [i - 1] [1] - središčne točke [1]) ** 2)) <= 50: cv2.line (okvir, središčne_točke [i - 1], središčne_točke , (b, g, r), 4)
cv2.imshow ('original', okvir)
cv2.imshow ('maska', maska)
k = cv2.počakajKljuč (5) & 0xFF
če je k == 27: prelom
cv2.destroyAllWindows ()
cap.release ()
Priporočena:
Micro: bitni senzor vida MU - sledenje objektom: 7 korakov
Micro: bitni senzor vida MU - sledenje objektom: V tem navodilu bomo začeli s programiranjem pametnega avtomobila, ki ga izdelujemo v tem navodilu, in v ta navodila smo namestili senzor vida MU. bit z nekaj preprostim sledenjem objektom, zato
Sledenje objektom na podlagi zaznavanja barv: 10 korakov
Sledenje objektom na podlagi zaznavanja barv: zgodba V tem projektu sem se naučil obdelave slik z uporabo Raspberry PI in odprl življenjepis. Za bolj zanimiv projekt sem uporabil dva servo motorja SG90 in nanj namestil kamero. En motor se je uporabljal za vodoravno premikanje, drugi pa za navpično premikanje
Raspberry Pi - avtonomni Mars Rover s sledenjem objektom OpenCV: 7 korakov (s slikami)
Raspberry Pi - avtonomni Mars Rover s sledenjem objektov OpenCV: Poganja ga Raspberry Pi 3, funkcija prepoznavanja odprtih CV -jev, ultrazvočni senzorji in motorji z enosmernim tokom. Ta rover lahko sledi vsakemu objektu, za katerega je usposobljen, in se premika po katerem koli terenu
Drsnik kamere za sledenje objektom z rotacijsko osjo. 3D natisnjeno in vgrajeno v krmilnik DC motorja RoboClaw & Arduino: 5 korakov (s slikami)
Drsnik kamere za sledenje objektom z rotacijsko osjo. 3D natisnjeno in izdelano na krmilniku RoboClaw DC Motor & Arduino: Ta projekt je bil eden mojih najljubših projektov, odkar sem združil zanimanje za snemanje videa z DIY. Vedno sem gledal in želel posnemati tiste kinematografske posnetke v filmih, kjer se kamera premika po zaslonu, medtem ko se premika, da sledi
Sledenje objektom - nadzor nosilca kamere: 4 koraki
Sledenje objektom - nadzor nosilca kamere: Pozdravljeni vsi, v tem navodilu vam bom pokazal napredek, dosežen pri mojem projektu sledenja objektom. Tu najdete prejšnji Instructable: https://www.instructables.com/id/Object-Tracking/ tukaj pa najdete sezname predvajanja na YouTubu z vsemi t