Përmbajtje:
- Hapi 1: Vizatimi i një drejtkëndëshi mbi objektin e njohur
- Hapi 2: Gjeni rrugën në të cilën objekti është zhvendosur
- Hapi 3: Integrimi i të dy Kodeve
Video: Ndjekja e objekteve të hapura: 3 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:12
Zbulimi i objekteve në lëvizje është një teknikë e përdorur në vizionin kompjuterik dhe përpunimin e imazhit. Korniza të shumta të njëpasnjëshme nga një video krahasohen me metoda të ndryshme për të përcaktuar nëse zbulohet ndonjë objekt në lëvizje.
Zbulimi i objekteve në lëvizje është përdorur për një gamë të gjerë aplikimesh si mbikëqyrje video, njohja e aktivitetit, monitorimi i gjendjes së rrugës, siguria e aeroportit, monitorimi i mbrojtjes përgjatë kufirit detar etj.
Zbulimi i objekteve lëvizëse është njohja e lëvizjes fizike të një objekti në një vend ose rajon të caktuar. [2] Duke vepruar segmentimin midis objekteve në lëvizje dhe zonës ose rajonit të palëvizshëm, lëvizja e objekteve në lëvizje mund të gjurmohet dhe kështu mund të analizohet më vonë. Për ta arritur këtë, konsideroni që një video është një strukturë e ndërtuar mbi korniza të vetme, zbulimi i objektit në lëvizje është gjetja e objektivit (ve) lëvizës në plan të parë, ose në secilën kornizë video ose vetëm kur objektivi lëvizës shfaq pamjen e parë në video.
Unë do të përdor kombinimin Opnecv dhe Python për të zbuluar dhe ndjekur objektet bazuar në ngjyrën
Hapi 1: Vizatimi i një drejtkëndëshi mbi objektin e njohur
nëse kompjuteri juaj nuk ka python ose opencv ju lutemi ndiqni këtë udhëzues më poshtë
këtu është kodi python:
import cv2import numpy si np
cap = cv2. VideoCapture (0)
ndërsa e vërtetë:
_, frame = cap.read () hsv = cv2.cvtColor (frame, cv2. COLOR_BGR2HSV)
më e ulët_e verdhë = np. varg ([20, 110, 110])
e verdha e sipërme = np. varg ([40, 255, 255])
maskë e verdhë = cv2.inRange (hsv, e poshtme_e verdhë, e sipërme -e verdhë)
(_, konturet, _) = cv2.findContours (maskë e verdhë, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
për konturin në konturet:
zona = cv2.contourArea (kontur)
nëse (zona> 800):
x, y, w, h = cv2.boundingRect (contour) frame = cv2.rekëndësh (kornizë, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("gjurmimi", kornizë)
k = cv2.waitKey (5) & 0XFF
nëse k == 27: pushim
cv2.destroyAllWindows ()
kapak. lëshim ()
Hapi 2: Gjeni rrugën në të cilën objekti është zhvendosur
për të gjetur rrugën:
për i në rang (1, len (pikat_qendra)): b = rastësore.randint (230, 255) g = rastësore.randint (100, 255) r = të rastësishme.randint (100, 255) nëse math.sqrt ((((pikat_qendrore [i - 1] [0] - pikat e qendrës [0]) ** 2) + ((pikat_qendra [i - 1] [1] - pikat e qendrës [1]) ** 2)) <= 50: cv2.line (korniza, pikat qendrore [i - 1], pikat qendrore , (b, g, r), 4)
Hapi 3: Integrimi i të dy Kodeve
Unë do të integroj të dy kodet
import cv2import numpy si np importim i rastësishëm nga koleksionet deque import
kap = cv2. VideoCapture (1)
# Për të mbajtur gjurmët e të gjitha pikave ku objekti vizitoi center_points = deque ()
ndërsa e vërtetë:
# Lexoni dhe rrokullisni kornizën _, frame = cap.read () frame = cv2.flip (frame, 1)
# Mjegulloni pak kornizën
blur_frame = cv2. Gaussian Blur (kornizë, (7, 7), 0)
# Konvertoni nga BGR në formatin e ngjyrave HSV
hsv = cv2.cvtColor (korniza e turbullt, cv2. COLOR_BGR2HSV)
# Përcaktoni gamën e poshtme dhe të sipërme të ngjyrës hsv për t'u zbuluar. Blu këtu
më e ulët_blue = np.rray ([100, 50, 50]) blue_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, blu_ e ulët, blu_ e lartë)
# Bëni kernel eliptik
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Morf i hapjes (erozioni i ndjekur nga zgjerimi)
maskë = cv2.morphologyEx (maskë, cv2. MORPH_OPEN, kernel)
# Gjeni të gjitha konturet
konturet, hierarkia = cv2.findContours (mask.kopje (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
nëse len (konturet)> 0:
# Gjeni konturin më të madh_kontur i madh = max (konturet, çelësi = cv2.contourArea)
# Gjeni qendrën e konturit dhe vizatoni rrethin e mbushur
momentet = cv2.moments (konturi më i madh) centre_of_contour = (int (momentet ['m10'] / momentet ['m00']), int (momentet ['m01'] / momentet ['m00'])) cv2.rreth (kornizë, qendra e_konturit, 5, (0, 0, 255), -1)
# Lidheni konturin me rreth
elips = cv2.fitEllips (konturi_më i madh) cv2.ellipse (kornizë, elips, (0, 255, 255), 2)
# Ruani qendrën e konturit kështu që ne tërheqim vijën duke e ndjekur atë
qendrat_pikat.appendleft (centre_of_contour)
# Vizatoni vijën nga pikat qendrore të konturit
për i në rang (1, len (pikat_qendra)): b = rastësore.randint (230, 255) g = rastësore.randint (100, 255) r = të rastësishme.randint (100, 255) nëse math.sqrt ((((pikat qendrore [i - 1] [0] - pikat qendrore [0]) ** 2) + ((pikat_qendra [i - 1] [1] - pikat qendrore [1]) ** 2)) <= 50: cv2.line (korniza, pikat qendrore [i - 1], pikat qendrore , (b, g, r), 4)
cv2.imshow ('origjinal', kornizë)
cv2.imshow ('maskë', maskë)
k = cv2.waitKey (5) & 0xFF
nëse k == 27: pushim
cv2.destroyAllWindows ()
kapak. lëshim ()
Recommended:
Mikro: bit MU Vision Sensor - Ndjekja e objekteve: 7 hapa
Micro: bit MU Vision Sensor - Ndjekja e Objekteve: Pra, në këtë udhëzues ne do të fillojmë të programojmë Smart Car që ndërtojmë në këtë udhëzues dhe që kemi instaluar një sensor vizioni MU në këtë udhëzues. Ne do të programojmë mikro: pak me një përcjellje të thjeshtë të objekteve, kështu që
Programimi i orientuar drejt objekteve: Krijimi i metodave të mësimit/mësimdhënies/teknikës së objekteve duke përdorur formuesin e formës: 5 hapa
Programimi i orientuar drejt objekteve: Krijimi i metodave të mësimit/mësimdhënies/teknikës së objekteve duke përdorur Shape Puncher: Metoda e të mësuarit/mësimdhënies për studentët e rinj në programimin e orientuar drejt objekteve. Kjo është një mënyrë për t'i lejuar ata të vizualizojnë dhe të shohin procesin e krijimit të objekteve nga klasat.Pjesët:1. EkTools grusht i madh 2 inç; format e ngurta janë më të mirat.2. Copë letre ose c
Programim i orientuar drejt objekteve: Krijimi i metodave të mësimit/mësimdhënies/teknikës së objekteve duke përdorur gërshërë: 5 hapa
Programim i orientuar drejt objekteve: Krijimi i metodave të të mësuarit/mësimdhënies/teknikës së përdorimit të gërshërëve: Metoda e të mësuarit/mësimdhënies për studentët e rinj në programimin e orientuar drejt objekteve. Kjo është një mënyrë për t'i lejuar ata të vizualizojnë dhe të shohin procesin e krijimit të objekteve nga klasat. Pjesë: 1. Gërshërë (çdo lloj do të bëjë). 2. Copë letre ose karton. 3. Shënuesi.
Ndjekja e objekteve - Kontrolli i montimit të kamerës: 4 hapa
Ndjekja e objekteve - Kontrolli i montimit të kamerës: Përshëndetje të gjithëve, Në këtë Instructable unë do t'ju tregoj përparimet e bëra për Projektin tim të Ndjekjes së Objektit. Këtu mund të gjeni udhëzuesin e mëparshëm: https://www.instructables.com/id/Object-Tracking/ dhe këtu mund të gjeni një listë dëgjimi në youtube me të gjitha t
Si të rivendosni dosjet e hapura kur të regjistroheni përsëri pasi të dilni: 5 hapa
Si të rivendosni dosjet e hapura kur ri-regjistroheni pasi të regjistroheni: Mirë kështu që këtu është situata, ju jeni duke përdorur kompjuterin me shumë dosje të hapura … Pastaj, mamaja juaj erdhi në shtëpi më herët nga sa pritej! Ju e dini në mënyrë të përsosur se nëse ajo ju kap duke përdorur kompjuterin, ndërsa ju duhet të jeni në shtrat sepse