Tartalomjegyzék:
- 1. lépés: Téglalap rajzolása a felismert objektumra
- 2. lépés: Keresse meg az útvonalat, amelyen az objektum elmozdult
- 3. lépés: Mindkét kód integrálása
Videó: Opencv objektumkövetés: 3 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
A mozgó objektumok észlelése a számítógépes látásban és képfeldolgozásban alkalmazott technika. Egy videó több egymást követő képkockáját különböző módszerekkel hasonlítják össze annak megállapítása érdekében, hogy érzékel -e mozgó tárgyat.
A mozgó objektumok észlelését számos alkalmazásban használták, mint például a videó megfigyelés, a tevékenységfelismerés, az út állapotának megfigyelése, a repülőtéri biztonság, a tengeri határ mentén történő védelem felügyelete stb.
A mozgó objektumok észlelése az objektum fizikai mozgásának felismerését jelenti egy adott helyen vagy régióban. [2] A mozgó tárgyak és az álló terület vagy régió közötti szegmentálással a mozgó tárgyak mozgása nyomon követhető, és így később elemezhető. Ennek elérése érdekében tegyük fel, hogy a videó egyetlen képkockákra épülő szerkezet, a mozgó objektumok észlelése az, hogy megtalálják az előtérben lévő mozgó célpontokat, vagy mindegyik videókeretben, vagy csak akkor, ha a mozgó célpont először mutatja be a videót.
Opnecv és Python kombinációt fogok használni az objektumok észlelésére és nyomon követésére a szín alapján
1. lépés: Téglalap rajzolása a felismert objektumra
Ha a számítógépen nincs python vagy opencv, kövesse az alábbi utasításokat
itt a python kód:
cv2import numpy importálása np -ként
cap = cv2. VideoCapture (0)
míg igaz:
_, frame = cap.read () hsv = cv2.cvtColor (keret, cv2. COLOR_BGR2HSV)
alsó_sárga = np.tömb ([20, 110, 110])
felső_sárga = np.array ([40, 255, 255])
sárga_maszk = cv2.inRange (hsv, alsó_sárga, felső_sárga)
(_, kontúrok, _) = cv2.findContours (sárga_maszk, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
kontúrokhoz kontúrok esetén:
terület = cv2.contourArea (kontúr)
ha (terület> 800):
x, y, w, h = cv2.boundingRect (kontúr) frame = cv2. rectangle (frame, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("követés", keret)
k = cv2.waitKey (5) & 0XFF
ha k == 27: törés
cv2.destroyAllWindows ()
cap.release ()
2. lépés: Keresse meg az útvonalat, amelyen az objektum elmozdult
nyomon követni az utat:
i esetén a (1, len (középpont))): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255), ha math.sqrt ((((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (keret, középpontok [i - 1], középpontok , (b, g, r), 4)
3. lépés: Mindkét kód integrálása
integrálom mind a kettő kódot
import cv2import numpy np -ként import véletlenszerűen gyűjteményekből import deque
cap = cv2. VideoCapture (1)
# Az összes olyan pont nyomon követéséhez, ahol az objektum meglátogatta center_points = deque ()
míg igaz:
# Keret olvasása és fordítása _, frame = cap.read () frame = cv2.flip (keret, 1)
# Kicsit elmossa a keretet
blur_frame = cv2. GaussianBlur (frame, (7, 7), 0)
# Konvertálás BGR -ből HSV színformátumba
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Határozza meg az észlelhető hsv szín alsó és felső tartományát. Kék itt
alsó_kék = np.tömb ([100, 50, 50]) felső_kék = np.tömb ([140, 255, 255]) maszk = cv2.inRange (hsv, alsó_kék, felső_kék)
# Készítsen elliptikus kernelt
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Nyitó morfium (erózió, majd dilatáció)
maszk = cv2.morphologyEx (maszk, cv2. MORPH_OPEN, kernel)
# Keresse meg az összes kontúrt
kontúrok, hierarchia = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
ha len (kontúrok)> 0:
# Keresse meg a legnagyobb kontúrt legnagyobb_kontúr = max (kontúrok, kulcs = cv2.contourArea)
# Keresse meg a kontúr középpontját, és rajzoljon betöltött kört
pillanatok = cv2.moments (legnagyobb_kontúr) center_of_contour = (int (pillanatok ['m10'] / pillanatok ['m00']), int (pillanatok ['m01'] / pillanatok ['m00'])) cv2.circle (frame, kontúr középpontja, 5, (0, 0, 255), -1)
# Korlátozza körbe a kontúrt
ellipszis = cv2.fit
# Mentse el a kontúr középpontját, így rajzoljuk a nyomvonalat
center_points.appendleft (kontúr középpontja)
# Rajzoljon vonalat a kontúr középpontjaiból
i esetén a (1, len (középpont))): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255), ha math.sqrt ((((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (keret, középpontok [i - 1], középpontok , (b, g, r), 4)
cv2.imshow ('eredeti', keret)
cv2.imshow ('maszk', maszk)
k = cv2.waitKey (5) & 0xFF
ha k == 27: törés
cv2.destroyAllWindows ()
cap.release ()
Ajánlott:
QR -kód -szkenner az OpenCV használatával Pythonban: 7 lépés
QR-kód-szkenner az OpenCV használatával Pythonban: A mai világban azt látjuk, hogy a QR-kódot és a vonalkódot szinte mindenhol használják, a termékcsomagolástól az online fizetésig, és manapság már az étteremben is látjuk a QR-kódokat a menü megtekintéséhez. kétlem, hogy ez most a nagy gondolat. De szenvedtél már valaha
Valós idejű Rubik-kocka bekötött szemű megoldó a Raspberry Pi és az OpenCV használatával: 4 lépés
Valós idejű Rubik-kocka bekötött szemű megoldó a Raspberry Pi és az OpenCV használatával: Ez a Rubik kockaeszköz 2. verziója, bekötött szemmel történő megoldásra. Az első verziót a javascript fejlesztette ki, láthatja a RubiksCubeBlindfolded1 projektet. Az előzőtől eltérően ez a verzió az OpenCV könyvtárat használja a színek és az
Micro: bit MU Vision Sensor - Objektumkövetés: 7 lépés
Mikro: bit MU látásérzékelő - Objektumkövetés: Tehát ebben az utasításban elkezdjük programozni az intelligens autót, amelyet ebbe az oktatóanyagba építünk, és amelybe MU látásérzékelőt telepítettünk. kicsit egyszerű objektumkövetéssel, így a
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 lépés
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Android: DESCRI Ç Ã OO intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes beltéri como casas vagy bevásárlóközpontok és repülőterek.A locomo ç ã o em ambientes j á mapeados pode ou n ã o s
Színészlelésen alapuló objektumkövetés: 10 lépés
Színészlelésen alapuló objektumkövetés: Történet Ezt a projektet azért készítettem, hogy megtanuljam a képfeldolgozást Raspberry PI és nyílt CV segítségével. Hogy ezt a projektet érdekesebbé tegyem, két SG90 szervo motort használtam, és kamerát szereltem rá. Az egyik motor vízszintesen mozog, a másik pedig a függőleges mozgáshoz