Indholdsfortegnelse:
- Trin 1: Tegn et rektangel på det genkendte objekt
- Trin 2: Spor den sti, som objektet har bevæget sig i
- Trin 3: Integrering af begge koder
Video: Opencv Object Tracking: 3 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Registrering af bevægelige objekter er en teknik, der bruges til computersyn og billedbehandling. Flere på hinanden følgende rammer fra en video sammenlignes med forskellige metoder for at afgøre, om et objekt i bevægelse detekteres.
Registrering af bevægelige objekter er blevet brugt til en bred vifte af applikationer som videoovervågning, aktivitetsgenkendelse, vejtilstandsovervågning, lufthavnssikkerhed, overvågning af beskyttelse langs havgrænser osv.
Bevægelse af bevægelige objekter er at genkende den fysiske bevægelse af et objekt på et givet sted eller område. [2] Ved at handle segmentering mellem bevægelige objekter og stationære områder eller områder kunne bevægelige objekters bevægelse spores og dermed kunne analyseres senere. For at opnå dette skal du overveje, at en video er en struktur, der er bygget på enkeltbilleder, detektering af bevægelige objekter er at finde det eller de foregående bevægelige mål (r) enten i hver videoramme eller kun når det bevægelige mål viser det første udseende i videoen.
Jeg vil bruge Opnecv og Python kombination til at opdage og spore objekterne baseret på farven
Trin 1: Tegn et rektangel på det genkendte objekt
Hvis din pc ikke har python eller opencv, skal du følge denne nedenstående instabilitet
her er python -koden:
import cv2import numpy som np
cap = cv2. VideoCapture (0)
mens det er sandt:
_, frame = cap.read () hsv = cv2.cvtColor (frame, cv2. COLOR_BGR2HSV)
lavere_gul = np.array ([20, 110, 110])
øvre_gul = np.array ([40, 255, 255])
gul_maske = cv2.inRange (hsv, lavere_gul, øvre_gul)
(_, konturer, _) = cv2.findContours (gul_maske, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
til kontur i konturer:
område = cv2.contourArea (kontur)
hvis (område> 800):
x, y, w, h = cv2.boundingRect (kontur) ramme = cv2.rektangel (ramme, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("sporing", ramme)
k = cv2.waitKey (5) & 0XFF
hvis k == 27: pause
cv2.destroyAllWindows ()
cap.release ()
Trin 2: Spor den sti, som objektet har bevæget sig i
for at spore stien:
for i i område (1, len (center_points)): 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 (ramme, center_points [i - 1], center_points , (b, g, r), 4)
Trin 3: Integrering af begge koder
Jeg vil integrere begge koder
import cv2import numpy som np import tilfældig fra samlinger import deque
cap = cv2. VideoCapture (1)
# For at holde styr på alle punkter, hvor objekt besøgte center_points = deque ()
mens det er sandt:
# Læs og vend ramme _, frame = cap.read () frame = cv2.flip (frame, 1)
# Slør rammen lidt
blur_frame = cv2. GaussianBlur (ramme, (7, 7), 0)
# Konverter fra BGR til HSV farveformat
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Definer lavere og øvre område af hsv -farve, der skal registreres. Blå her
lavere_blå = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) maske = cv2.inRange (hsv, lavere_blå, øvre_blå)
# Lav elliptisk kerne
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Åbningsmorph (erosion efterfulgt af udvidelse)
mask = cv2.morphologyEx (maske, cv2. MORPH_OPEN, kerne)
# Find alle konturer
konturer, hierarki = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
hvis len (konturer)> 0:
# Find den største kontur største_kontur = max (konturer, nøgle = cv2.contourArea)
# Find konturens centrum og tegn den fyldte cirkel
øjeblikke = cv2.moments (største_kontur) center_of_contour = (int (øjeblikke ['m10'] / øjeblikke ['m00']), int (øjeblikke ['m01'] / øjeblikke ['m00'])) cv2.circle (ramme, center_of_contour, 5, (0, 0, 255), -1)
# Bind konturen med cirkel
ellipse = cv2.fitEllipse (største_kontur) cv2.ellipse (ramme, ellipse, (0, 255, 255), 2)
# Gem midten af konturen, så vi tegner en linje, der sporer den
center_points.appendleft (center_of_contour)
# Tegn streg fra midtpunktet af konturen
for i i område (1, len (center_points)): 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 (frame, center_points [i - 1], center_points , (b, g, r), 4)
cv2.imshow ('original', ramme)
cv2.imshow ('maske', maske)
k = cv2.waitKey (5) & 0xFF
hvis k == 27: pause
cv2.destroyAllWindows ()
cap.release ()
Anbefalede:
Pixy2Bot Object Follower (Servokode): 4 trin
Pixy2Bot Object Follower (Servokode): Bygger en simpel genstand efter robot (ingen pan/tilt -mekanisme) med et Arduino Uno + motorskærm, to billige kontinuerlige servoer og en Pixy2. Video: https://youtu.be/lxBLt5DJ5BM
Object Sensor Machine: 6 trin
Object Sensor Machine: Videoen på toppen Introduktion: Der er altid et problem, hvor folk ikke ved, hvor de lægger tingene eller ikke ved, om objektet er på det rigtige sted, og folk glemmer altid at tage ting og glemme putte det ind på deres tilhørssted. Så mit objekt
DIY Smart Robot Tracking Car Kits Tracking Car Fotosensitive: 7 trin
DIY Smart Robot Tracking Car Kits Tracking Car Fotofølsom: Design af SINONING ROBOT Du kan købe fra tracking robot carTheoryLM393 chip sammenligne de to fotoresistor, når der er en fotoresistor LED på den ene side på HVID, stopper motorens side med det samme, den anden side af motoren drej op, så
Raspberry Pi Object Detection: 7 trin
Raspberry Pi Object Detection: Denne vejledning giver trin-for-trin instruktioner til, hvordan du konfigurerer TensorFlows Object Detection API på Raspberry Pi. Ved at følge trinene i denne vejledning kan du bruge din Raspberry Pi til at udføre objektdetektering på livevideo fra en P
Raspberry Pi - Autonom Mars Rover Med OpenCV Object Tracking: 7 trin (med billeder)
Raspberry Pi - Autonom Mars Rover Med OpenCV Object Tracking: Drevet af en Raspberry Pi 3, Open CV objektgenkendelse, Ultrasonic sensorer og gearede DC motorer. Denne rover kan spore ethvert objekt, den er trænet til, og bevæge sig på ethvert terræn