INHOUDSOPGAWE:
- Stap 1: teken 'n reghoek op die erkende voorwerp
- Stap 2: Ontdek die pad waarin die voorwerp beweeg het
- Stap 3: Integreer albei die kodes
Video: Opencv -objekopsporing: 3 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Bewegingsvoorwerpopsporing is 'n tegniek wat gebruik word in rekenaarvisie en beeldverwerking. Verskeie opeenvolgende rame van 'n video word met verskillende metodes vergelyk om te bepaal of 'n bewegende voorwerp opgespoor word.
Opsporing van bewegende voorwerpe is gebruik vir 'n wye verskeidenheid toepassings, soos video -toesig, aktiwiteitsherkenning, monitering van padtoestande, lughaweveiligheid, monitering van beskerming langs die seegrens, ens.
Bewegingsvoorwerpopsporing is om die fisiese beweging van 'n voorwerp op 'n gegewe plek of gebied te herken. [2] Deur segmentering tussen bewegende voorwerpe en stilstaande gebied of gebied op te tree, kan bewegende voorwerpe se beweging gevolg word en kan dit later geanaliseer word. Om dit te bereik, oorweeg dit dat 'n video 'n struktuur is wat op enkele rame gebou is; opsporing van bewegende voorwerpe is om die bewegende teiken (s) op die voorgrond te vind, hetsy in elke videorame of slegs wanneer die bewegende teiken die eerste verskyning in die video toon.
Ek gaan die kombinasie van Opnecv en Python gebruik om die voorwerpe op grond van die kleur op te spoor en op te spoor
Stap 1: teken 'n reghoek op die erkende voorwerp
As u rekenaar nie python of opencv het nie, volg die onderstaande instruksies hieronder
hier is die python -kode:
voer cv2import numpy in as np
pet = cv2. VideoCapture (0)
terwyl dit waar is:
_, frame = cap.read () hsv = cv2.cvtColor (raam, cv2. COLOR_BGR2HSV)
laer_geel = np.array ([20, 110, 110])
upper_yellow = np.array ([40, 255, 255])
geel_masker = cv2.inRange (hsv, laer_geel, boonste_geel)
(_, kontoere, _) = cv2.findContours (geel_masker, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
vir kontoer in kontoere:
gebied = cv2.contourArea (kontoer)
as (oppervlakte> 800):
x, y, w, h = cv2.boundingRect (kontoer) raam = cv2.reghoek (raam, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("dop", raam)
k = cv2.waitKey (5) & 0XFF
as k == 27: breek
cv2.destroyAllWindows ()
cap.release ()
Stap 2: Ontdek die pad waarin die voorwerp beweeg het
om die pad op te spoor:
vir i in reeks (1, len (middelpunte)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) as wiskunde.sqrt (((middelpunte [i - 1] [0] - middelpunte [0]) ** 2) + ((middelpunte [i - 1] [1] - middelpunte [1]) ** 2)) <= 50: cv2.line (raam, middelpunte [i - 1], middelpunte , (b, g, r), 4)
Stap 3: Integreer albei die kodes
Ek gaan albei die kode integreer
invoer cv2import numpy as np invoer ewekansig uit versamelings invoer deque
pet = cv2. VideoCapture (1)
# Om tred te hou met alle punte waar die voorwerp sentrumpunte besoek het = deque ()
terwyl dit waar is:
# Lees en draai raam _, raam = cap.read () raam = cv2.flip (raam, 1)
# Maak die raam 'n bietjie vervaag
blur_frame = cv2. GaussianBlur (raam, (7, 7), 0)
# Skakel om van BGR na HSV -kleurformaat
hsv = cv2.cvtColor (vervaging_raam, cv2. COLOR_BGR2HSV)
# Definieer die onderste en boonste reeks hsv -kleur om op te spoor. Blou hier
lower_blue = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, lower_blue, upper_blue)
# Maak elliptiese pit
kern = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Openingsmorf (erosie gevolg deur verwyding)
masker = cv2.morphologyEx (masker, cv2. MORPH_OPEN, kern)
# Vind alle kontoere
kontoere, hiërargie = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
as len (kontoere)> 0:
# Vind die grootste kontoer grootste_kontoer = maksimum (kontoere, sleutel = cv2.contourArea)
# Vind middelpunt van die kontoer en teken 'n gevulde sirkel
oomblikke = cv2.moments (grootste_kontoer) sentrum_van_kontoer = (int (oomblikke ['m10'] / oomblikke ['m00']), int (oomblikke ['m01'] / oomblikke ['m00'])) cv2.circle (raam, sentrum_van_kontoer, 5, (0, 0, 255), -1)
# Omring die kontoer met 'n sirkel
ellips = cv2.fitEllipse (grootste_kontoer) cv2.ellipse (raam, ellips, (0, 255, 255), 2)
# Stoor die middelpunt van die kontoer sodat ons 'n lyn trek om dit te volg
center_points.appendleft (center_of_contour)
# Trek 'n lyn van die middelpunte van die kontoer
vir i in reeks (1, len (middelpunte)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) as wiskunde.sqrt ((((middelpunte [i - 1] [0] - middelpunte [0]) ** 2) + ((middelpunte [i - 1] [1] - middelpunte [1]) ** 2)) <= 50: cv2.line (raam, middelpunte [i - 1], middelpunte , (b, g, r), 4)
cv2.imshow ('oorspronklik', raam)
cv2.imshow ('masker', masker)
k = cv2.waitKey (5) & 0xFF
as k == 27: breek
cv2.destroyAllWindows ()
cap.release ()
Aanbeveel:
QR -kode skandeerder met behulp van OpenCV in Python: 7 stappe
QR-kode skandeerder met behulp van OpenCV in Python: In vandag se wêreld sien ons dat QR-kode en strepieskode byna oral gebruik word, van die verpakking van die produk tot die aanlynbetalings, en nou sien ons QR-kodes selfs in die restaurant om die spyskaart te sien. twyfel of dit nou die groot gedagte is. Maar het jy al ooit
Real-time Rubik's Cube Geblinddoekoplosser met behulp van Raspberry Pi en OpenCV: 4 stappe
Real-time Rubik's Cube Geblinddoekoplosser met behulp van Raspberry Pi en OpenCV: Dit is die 2de weergawe van Rubik se kubusgereedskap wat gemaak is vir die oplossing van geblinddoek. Die eerste weergawe is ontwikkel deur javascript; u kan die projek RubiksCubeBlindfolded1 sien, anders as die vorige, gebruik hierdie weergawe OpenCV -biblioteek om die kleure en e
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo for Android: 6 Stappe
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: DESCRI Ç Ã OO intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes indoor como casas ou shopping centers e aeroportos.A locomo ç ã o em ambientes j á mapeados pode ou n ã o s
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: 7 stappe
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: 'n nossa lixeira inteligente consiste na separa ç ã o autom á tica do lixo. Die webkamera van die webwerf kan ook geïdentifiseer word
Beeldverwerking met die Raspberry Pi: Installeer OpenCV en skeiding van beeldkleur: 4 stappe
Beeldverwerking met die Raspberry Pi: Installeer OpenCV en skeiding van beeldkleure: Hierdie plasing is die eerste van verskeie tutoriale vir beeldverwerking wat volg. Ons kyk na die pixels van 'n beeld van nader, leer hoe om OpenCV op die Raspberry Pi te installeer en skryf ook toetsskrifte om 'n beeld vas te lê en ook