Përmbajtje:
- Hapi 1: Gjërat e kërkuara:
- Hapi 2: PARIMI I PUNS:
- Hapi 3: INFUT MAPJE DHE PCRPUNIM:
- Hapi 4:
- Hapi 5:
- Hapi 6: PJESA E PCRPUNIMIT:
- Hapi 7:
- Hapi 8:
- Hapi 9:
- Hapi 10:
- Hapi 11:
- Hapi 12: KONTROLLI I LOTVIZJES:
- Hapi 13:
Video: Gesture Hawk: Roboti i kontrolluar me gjeste duke përdorur ndërfaqen e bazuar në përpunimin e imazhit: 13 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
Gesture Hawk u shfaq në TechEvince 4.0 si një ndërfaqe e thjeshtë e përpunimit të imazhit të bazuar në njeri-makinë. Dobia e tij qëndron në faktin se nuk kërkohen sensorë shtesë ose të veshshëm përveç një doreze për të kontrolluar makinën robotike që funksionon në parimin e lëvizjes diferenciale. Në këtë udhëzues, ne do t'ju përcjellim përmes parimit të punës prapa gjurmimit të objekteve dhe zbulimit të gjesteve të përdorura në sistem. Kodi burimor i këtij projekti mund të shkarkohet nga Github përmes lidhjes:
Hapi 1: Gjërat e kërkuara:
- Drejtuesi i motorit L298N
- DC Motors
- Shasia e makinave robot
- Arduino Uno
- Bateri LiPo
- Kabllo USB Arduino (e gjatë)
- Biblioteka OpenCV me Python
Hapi 2: PARIMI I PUNS:
Gesture Hawk është një sistem përpunimi trefazor siç mund ta shihni në diagramin e mësipërm.
Hapi 3: INFUT MAPJE DHE PCRPUNIM:
Kapja e hyrjes mund të kuptohet në kategoritë më të gjera të dhëna në diagramin e mësipërm.
Për të nxjerrë formën e dorës nga mjedisi, duhet të përdorim maskimin ose filtrimin e një ngjyre të caktuar (në këtë rast - blu vjollce '). Për ta bërë këtë ju duhet të konvertoni imazhin nga BGR në formatin HSV që mund të bëhet duke përdorur fragmentin e mëposhtëm të kodit.
hsv = cv2.cvtColor (kornizë, cv2. COLOR_BGR2HSV)
Tani, hapi tjetër është të gjeni gamën e dëshiruar të parametrave HSV për të nxjerrë dorën përmes maskës ose filtrit. Për këtë, mënyra më e mirë është të përdorni shiritat e pistave për të gjetur një gamë të përshtatshme. Këtu është pamja e ekranit e një shiriti të pistave të përdorur për këtë projekt.
Hapi 4:
Hapi 5:
Këtu, ekziston një fragment kodi i dhënë më poshtë për të bërë një shirit të tillë për ndërtimin e maskave:
import cv2
importoni numpy si npdef asgjë (x): kaloni cv2.namedWindow ('image') img = cv2. VideoCapture (0) cv2.createTrackbar ('l_H', 'image', 110, 255, asgjë) cv2.createTrackbar ('l_S ',' image ', 50, 255, asgjë) cv2.createTrackbar (' l_V ',' image ', 50, 255, asgjë) cv2.createTrackbar (' h_H ',' image ', 130, 255, asgjë) cv2. createTrackbar ('h_S', 'image', 255, 255, asgjë) cv2.createTrackbar ('h_V', 'image', 255, 255, asgjë) ndërsa (1): _, frame = img.read ()
hsv = cv2.cvtColor (kornizë, cv2. COLOR_BGR2HSV) lH = cv2.getTrackbarPos ('l_H', 'image') lS = cv2.getTrackbarPos ('l_S', 'image') lV = cv2.getTrackbarPos ('l_V', 'image') hH = cv2.getTrackbarPos ('h_H', 'image') hS = cv2.getTrackbarPos ('h_S', 'image') hV = cv2.getTrackbarPos ('h_V', 'image') low_R = np array ([lH, lS, lV]) above_R = np.array ([hH, hS, hV]) mask = cv2.inRange (hsv, low_R, above_R) res = cv2.bitwise_and (frame, frame, mask = mask) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF nëse k == 27: thyej cv2.destroyAllWindows ()
Hapi 6: PJESA E PCRPUNIMIT:
Epo, ne kemi formën gjeometrike të një dore, tani është koha ta shfrytëzojmë dhe ta përdorim për të kuptuar gjestin e dorës.
Hull konveks:
Përmes bykut konveks, ne përpiqemi të përshtatim një poligon të përafërt përmes pikave ekstreme të pranishme në formë. Imazhi i pranishëm në të majtë tregon poligonin e përafërt që i ishte caktuar formës me pikat konvekse të shënuara me të kuqe.
Pikat konvekse janë ato pika në formë të cilat janë më të largëta nga një anë e këtij poligoni të përafruar. Por, problemi me bykun konveks është se gjatë llogaritjes së tij, ne do të marrim një grup të të gjitha pikave konveks, por ajo që na nevojitet është pika konveks me majë blu. Ne do t'ju tregojmë pse kërkohet.
Për të gjetur këtë pikë konveks, ne duhet të zbatojmë formulën e distancës pingul për të gjetur distancën e pikës konveks me anën më të afërt. Ne vumë re se pika blu me majë posedon distancë maksimale nga ana dhe kështu e marrim këtë pikë.
Hapi 7:
Hapi 8:
Tjetra ne duhet të gjejmë prirjen e vijës që bashkon majën e gishtit të madh (ose pikën ekstreme) në këtë pikë konveks me horizontale.
Hapi 9:
Në rastin e mësipërm, Këndi α duhet të jetë midis 0 dhe 90 gradë nëse gjesti është për kthesën majtas. Kjo është tan (α) duhet të jetë pozitive.
Hapi 10:
Në rastin e mësipërm, Këndi α duhet të jetë midis 180 dhe 90 gradë nëse gjesti është për kthesën në të djathtë. Kjo është tan (α) duhet të jetë negative.
Prandaj, nëse Tan α është pozitiv, atëherë Ktheni në të majtë. Nëse Tan α është negativ, atëherë kthesa në të djathtë. Tani, është koha për të parë se si të zbuloni komandën më të rëndësishme të ndalimit.
Këtu, një raport i specifikuar (i gjetur me goditje dhe provë) shqyrtohet dhe në rastet maksimale ky raport i distancave mbetet në këtë interval të veçantë.
Hapi 11:
Më në fund, gjesti i lëvizjes përpara analizohet me funksionin matchShape () në OpenCV. Ky funksion krahason formën e dy numëruesve, në këtë rast, midis shembullit të stërvitjes në thight në figurën e mësipërme me konturin në anën e majtë të imazhit të mësipërm. Kthen një vlerë që varion nga 0 në 2 ose 3, sipas ndryshimit të pranishëm në formën e dy kontureve. Për të njëjtën kontur, ai kthehet 0.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0.0)
Këtu, cn1 dhe cnt2 janë dy konturet që duhen krahasuar.
Hapi 12: KONTROLLI I LOTVIZJES:
PySerial:
Ne përdorëm bibliotekën PySerial të python për të kthyer të dhënat e përpunuara në të dhëna serike për t'i komunikuar Arduino Uno përmes kabllos USB Arduino. Pasi një gjest i veçantë u zbulua nga opencv ne krijuam një variabël të përkohshëm thuaj 'x' dhe i caktuam një vlerë unike dhe e konvertuam atë në hyrje serike duke përdorur rreshtin e mëposhtëm të komandës:-
serial import #për të importuar bibliotekën Pyserial
serial. Serial ('', baudrate = '9600', timeout = '0') # vendosja e daljes serike.. EMRI I PORTIT është emri i portës me të cilin do të ndodhë transmetimi i të dhënave.
serial.write (b'x ') # x është alfabeti i dërguar në port … b është për ta kthyer këtë varg në bajt.
Përpunimi i Arduino:
Tani arduino është koduar në mënyrë të tillë që çdo serial x i ndryshëm të përcaktohet në mënyrë lineare në një veprim të caktuar përgjegjës për një lëvizje të qetë të robotit (të themi se zbulimi i gjestit të majtë do t'i nxisë motorët në të djathtë të kthehen majtas). Ne mund të kontrollojmë lëvizjen e secilës rrotë përkthimore si dhe rrotulluese duke ndryshuar kodin siç duhet.
L298N Drejtuesi i motorit:-
Motor Driver përdoret si ndërmjetës midis motorit dhe burimit të energjisë pasi motorët nuk mund të fuqizohen drejtpërdrejt për shkak të vlerësimeve të tensionit të ulët. Bateria Li-Po është e lidhur me terminalin e saj të hyrjes 12V dhe ne lidhim prizën e arduinos me 5V në prizën e hyrjes së motorit 5V të drejtuesit të motorit që lidh tokën përfundimisht të Li-Po, si dhe arduino në një prizë të zakonshme tokësore të drejtuesit të motorit.
Tani terminalet e motorëve janë të lidhur në prizat e dhëna. Së fundi, ne lidhim terminalet e hyrjes për motorin në prizat e daljes PWM të arduino duke na lënë të lirë të vendosim me saktësi aspektet rrotulluese dhe të përkthimit të lëvizjes.
Recommended:
Roboti i kontrolluar me gjeste duke përdorur Arduino: 7 hapa
Roboti i kontrolluar me gjeste duke përdorur Arduino: Robotët përdoren në shumë sektorë si ndërtimi, ushtria, prodhimi, montimi, etj. Robotët mund të jenë autonomë ose gjysmë-autonomë. Robotët autonomë nuk kërkojnë ndërhyrje njerëzore dhe mund të veprojnë vetë sipas situatës. Se
Sistemi i njohjes dhe fikjes së zjarrit bazuar në përpunimin e imazhit: 3 hapa
Sistemi i Njohjes dhe Shuarjes i Zjarrit i bazuar në Përpunimin e Imazhit: Përshëndetje miq ky është një sistem zbulimi dhe shuarje zjarri i bazuar në përpunimin e imazhit duke përdorur Arduino
Miu i kontrolluar me gjeste duke përdorur mikro: bit: 5 hapa
Miu i kontrolluar me gjeste duke përdorur mikro: bit: HYRJE Projekti është një mi i kontrolluar nga gjestet, në formën e një doreze me një mikro: bit të ngulitur në të. Shtë një projekt i frymëzuar nga një ide e hershme që kisha si inxhinier i ngulitur. Unë gjithmonë dëshiroj të kem qasje në një grup miu dhe tastiere pa tel
Roboti SCARA: Mësoni Rreth Kinematikës Foward dhe Inverse !!! (Plot Twist Mësoni si të bëni një ndërfaqe në kohë reale në ARDUINO duke përdorur përpunimin !!!!): 5 hapa (me fotografi)
Roboti SCARA: Mësoni Rreth Kinematikës Foward dhe Inverse !!! (Plot Twist Mësoni si të bëni një ndërfaqe në kohë reale në ARDUINO duke përdorur përpunimin !!!!): Një robot SCARA është një makinë shumë e popullarizuar në botën e industrisë. Emri qëndron për krahun robot të Asamblesë selektive të pajtueshme ose krahun robot të artikuluar me pajtueshmëri selektive. Në thelb është një robot i lirisë me tre shkallë, duke qenë dy shpërndarësit e parë
Një Hyrje në Përpunimin e Imazhit: Pixy & Alternativat e Tij: 6 Hapa
Një Hyrje në Përpunimin e Imazheve: Pixy & Alternativat e Tij: Në këtë artikull, Ne do të shpjegojmë kuptimin e Përpunimit Dixhital të Imazhit (DIP) dhe arsyet e përdorimit të pajisjeve si Pixy dhe mjeteve të tjera për të bërë një proces në fotografi ose video. Në fund të këtij artikulli, do të mësoni: Si formohet një imazh dixhital.