![Opencv objektu izsekošana: 3 soļi Opencv objektu izsekošana: 3 soļi](https://i.howwhatproduce.com/images/006/image-16215-j.webp)
Satura rādītājs:
2025 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2025-01-23 14:59
![Opencv objektu izsekošana Opencv objektu izsekošana](https://i.howwhatproduce.com/images/006/image-16215-1-j.webp)
Kustīgu objektu noteikšana ir metode, ko izmanto datora redzējumā un attēlu apstrādē. Vairāki secīgi video kadri tiek salīdzināti ar dažādām metodēm, lai noteiktu, vai tiek atklāts kustīgs objekts.
Kustīgu objektu noteikšana ir izmantota plašam lietojumu klāstam, piemēram, videonovērošanai, darbību atpazīšanai, ceļu stāvokļa uzraudzībai, lidostu drošībai, aizsardzības uzraudzībai gar jūras robežu utt.
Kustīgu objektu noteikšana ir atpazīt objekta fizisko kustību noteiktā vietā vai reģionā. [2] Veicot segmentāciju starp kustīgiem objektiem un stacionāru zonu vai reģionu, kustīgo objektu kustību varētu izsekot un tādējādi to varētu analizēt vēlāk. Lai to panāktu, uzskatiet, ka videoklips ir struktūra, kas veidota uz atsevišķiem kadriem, un kustīgu objektu noteikšana ir atrast priekšplāna kustīgo (-os) mērķi (-us) vai nu katrā video kadrā, vai tikai tad, kad kustīgais mērķis parāda pirmo videoklipa izskatu.
Es izmantošu Opnecv un Python kombināciju, lai noteiktu un izsekotu objektus, pamatojoties uz krāsu
1. darbība. Taisnstūra uzzīmēšana uz atpazīstamā objekta
ja jūsu datoram nav python vai opencv, lūdzu, ievērojiet tālāk sniegtos norādījumus
šeit ir pitona kods:
importēt cv2import numpy kā np
cap = cv2. VideoCapture (0)
kamēr taisnība:
_, frame = cap.read () hsv = cv2.cvtColor (kadrs, cv2. COLOR_BGR2HSV)
apakšējais_dzeltens = np.masīvs ([20, 110, 110])
augšējais_dzeltens = np.masīvs ([40, 255, 255])
dzeltena_maska = cv2.inRange (HSV, apakšējā_dzeltenā, augšējā_dzeltenā)
(_, kontūras, _) = cv2.findContours (dzeltena_maska, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
kontūrām kontūrās:
laukums = cv2.contourArea (kontūra)
ja (platība> 800):
x, y, w, h = cv2.boundingRect (kontūras) rāmis = cv2. taisnstūris (frame, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("izsekošana", rāmis)
k = cv2.waitKey (5) un 0XFF
ja k == 27: pārtraukums
cv2.destroyAllWindows ()
cap.release ()
2. solis: izsekojiet ceļu, pa kuru objekts ir pārvietojies
lai izsekotu ceļu:
i diapazonā (1, len (centra_punkti)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255), ja math.sqrt ((((centra_punkti [i - 1] [0] - centra_punkti [0]) ** 2) + ((centra_punkti [i - 1] [1] - centra_punkti [1]) ** 2)) <= 50: cv2.line (kadrs, centra_punkti [i - 1], centra_punkti , (b, g, r), 4)
3. solis: integrējiet abus kodus
es integrēšu abus kodus
importēt cv2import numpy kā np importēt izlases veidā no kolekcijām importēt deque
cap = cv2. VideoCapture (1)
# Lai izsekotu visiem punktiem, kur objekts tika apmeklēts center_points = deque ()
kamēr taisnība:
# Lasīt un pagriezt rāmi _, rāmis = vāks.lasīt () rāmis = cv2.flip (rāmis, 1)
# Nedaudz izplūdiniet rāmi
blur_frame = cv2. GaussianBlur (kadrs, (7, 7), 0)
# Konvertēt no BGR uz HSV krāsu formātu
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Nosakiet atklājamo hsv krāsu apakšējo un augšējo diapazonu. Zils šeit
apakšējais_zils = np.masīvs ([100, 50, 50]) augšējais_zils = np.masīvs ([140, 255, 255]) maska = cv2.inRange (hsv, apakšējais_zils, augšējais_zils)
# Izveidojiet elipsveida kodolu
kodols = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Sākuma morfs (erozija, kam seko dilatācija)
maska = cv2.morphologyEx (maska, cv2. MORPH_OPEN, kodols)
# Atrodiet visas kontūras
kontūras, hierarhija = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
ja len (kontūras)> 0:
# Atrodiet lielāko kontūru.
# Atrodiet kontūras centru un uzzīmējiet apli
momenti = cv2.moments (lielākais_kontūrs) centre_of_contour = (int (mirkļi ['m10'] / mirkļi ['m00']), int (mirkļi ['m01'] / mirkļi ['m00'])) cv2. aplis (kadrs, kontūras centrs, 5, (0, 0, 255), -1)
# Apvelciet kontūru ar apli
elipse = cv2.fit
# Saglabājiet kontūras centru, lai mēs to novilktu
center_points.appendleft (centra_punkts)
# Zīmējiet līniju no kontūras centra punktiem
i diapazonā (1, len (centra_punkti)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255), ja math.sqrt ((((centra_punkti [i - 1] [0] - centra_punkti [0]) ** 2) + ((centra_punkti [i - 1] [1] - centra_punkti [1]) ** 2)) <= 50: cv2.line (kadrs, centra_punkti [i - 1], centra_punkti , (b, g, r), 4)
cv2.imshow ('oriģināls', kadrs)
cv2.imshow ('maska', maska)
k = cv2.waitKey (5) un 0xFF
ja k == 27: pārtraukums
cv2.destroyAllWindows ()
cap.release ()
Ieteicams:
Mikro: bitu MU redzes sensors - objektu izsekošana: 7 soļi
![Mikro: bitu MU redzes sensors - objektu izsekošana: 7 soļi Mikro: bitu MU redzes sensors - objektu izsekošana: 7 soļi](https://i.howwhatproduce.com/images/002/image-4080-11-j.webp)
Mikro: bitu MU redzes sensors - objektu izsekošana: Tātad šajā pamācībā mēs sāksim programmēt viedo automašīnu, ko mēs veidosim šajā pamācībā un ka šajā pamācībā mēs uzstādījām MU redzes sensoru. Mēs ieprogrammēsim mikro: mazliet ar vienkāršu objektu izsekošanu, tāpēc
Mikro: bitu MU redzes sensors - objektu izsekošana: 6 soļi
![Mikro: bitu MU redzes sensors - objektu izsekošana: 6 soļi Mikro: bitu MU redzes sensors - objektu izsekošana: 6 soļi](https://i.howwhatproduce.com/images/006/image-17672-j.webp)
Micro: bit MU Vision Sensor - Objektu izsekošana: Šī ir mana ceturtā rokasgrāmata par MU redzes sensoru micro: bit. Šeit es apskatīšu, kā izsekot objektus ar micro: bit un rakstīt koordinātas OLED ekrānā. Citos ceļvežos esmu aprakstījis, kā savienot mikro: bitu ar
Izsekošana un izsekošana maziem veikaliem: 9 soļi (ar attēliem)
![Izsekošana un izsekošana maziem veikaliem: 9 soļi (ar attēliem) Izsekošana un izsekošana maziem veikaliem: 9 soļi (ar attēliem)](https://i.howwhatproduce.com/images/007/image-19294-j.webp)
Izsekošana un izsekošana maziem veikaliem: šī ir sistēma, kas paredzēta maziem veikaliem, kas ir paredzēts uzstādīt uz e-velosipēdiem vai motorolleriem, lai veiktu piegādi nelielā attālumā, piemēram, maizes ceptuve, kas vēlas piegādāt konditorejas izstrādājumus. Ko nozīmē izsekošana un izsekošana? Izsekošana un izsekošana ir sistēma, ko izmanto
Raspberry Pi - autonoms Mars Rover ar OpenCV objektu izsekošanu: 7 soļi (ar attēliem)
![Raspberry Pi - autonoms Mars Rover ar OpenCV objektu izsekošanu: 7 soļi (ar attēliem) Raspberry Pi - autonoms Mars Rover ar OpenCV objektu izsekošanu: 7 soļi (ar attēliem)](https://i.howwhatproduce.com/images/009/image-24529-j.webp)
Raspberry Pi - autonoms Mars Rover ar OpenCV objektu izsekošanu: darbina Raspberry Pi 3, Open CV objektu atpazīšana, ultraskaņas sensori un pārnesumkārbas līdzstrāvas motori. Šis roveris var izsekot jebkuram objektam, kuram tas ir apmācīts, un pārvietoties pa jebkuru reljefu
Objektu izsekošana - kameras stiprinājuma vadība: 4 soļi
![Objektu izsekošana - kameras stiprinājuma vadība: 4 soļi Objektu izsekošana - kameras stiprinājuma vadība: 4 soļi](https://i.howwhatproduce.com/images/002/image-4069-117-j.webp)
Objektu izsekošana - kameras stiprinājuma vadība: Sveiki visiem! Šajā pamācībā es parādīšu progresu, kas gūts manā objektu izsekošanas projektā. Šeit jūs varat atrast iepriekšējo pamācību: https://www.instructables.com/id/Object-Tracking/ un šeit jūs varat atrast youtube atskaņošanas sarakstus ar visiem