Mundarija:
- 1 -qadam: Tanilgan ob'ektga to'rtburchak chizish
- 2 -qadam: Ob'ekt harakatlanadigan yo'lni aniqlang
- 3 -qadam: Ikkala kodni ham birlashtirish
Video: Opencv ob'ektlarini kuzatish: 3 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Harakatlanuvchi ob'ektlarni aniqlash - bu kompyuterni ko'rish va tasvirni qayta ishlashda qo'llaniladigan usul. Videodan ketma -ket ketma -ket keladigan kadrlar har xil usullar bilan taqqoslanib, harakatlanuvchi ob'ekt aniqlanadimi yoki yo'qligini aniqlaydi.
Harakatlanuvchi ob'ektlarni aniqlash videokuzatuv, faollikni aniqlash, yo'l holatini kuzatish, aeroportlar xavfsizligi, dengiz chegarasi bo'ylab muhofaza qilish monitoringi va boshqalar kabi keng ko'lamli dasturlar uchun ishlatilgan.
Harakatlanuvchi ob'ektni aniqlash - bu ma'lum bir joyda yoki mintaqada ob'ektning jismoniy harakatini tan olish. [2] Harakatlanuvchi ob'ektlar va harakatsiz maydon yoki mintaqalar o'rtasida bo'linish orqali harakatlanuvchi jismlarning harakatini kuzatish mumkin edi va ularni keyinchalik tahlil qilish mumkin edi. Bunga erishish uchun, video - bu bitta kadrga qurilgan tuzilma, harakatlanuvchi ob'ektni aniqlash - har bir video kadrda yoki harakatlanuvchi maqsad videoning birinchi ko'rinishini ko'rsatganda, oldingi harakatlanuvchi nishonlarni topish.
Rangga qarab ob'ektlarni aniqlash va kuzatish uchun Opnecv va Python kombinatsiyasidan foydalanmoqchiman
1 -qadam: Tanilgan ob'ektga to'rtburchak chizish
Agar sizning kompyuteringizda python yoki opencv bo'lmasa, iltimos, quyida bajarib bo'lmaydigan narsalarga amal qiling
bu erda python kodi:
cv2import numpy ni np sifatida import qiling
cap = cv2. VideoCapture (0)
rost bo'lsa:
_, frame = cap.read () hsv = cv2.cvtColor (ramka, cv2. COLOR_BGR2HSV)
pastki_sar = np.array ([20, 110, 110])
yuqori_sar = np.array ([40, 255, 255])
yellow_mask = cv2.inRange (hsv, pastki_sar, yuqori_sar)
(_, konturlar, _) = cv2.findContours (sariq_maska, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
kontur uchun kontur uchun:
maydon = cv2.contourArea (kontur)
agar (maydoni> 800):
x, y, w, h = cv2.boundingRect (kontur) ramka = cv2. to'rtburchak (ramka, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("kuzatish", ramka)
k = cv2.waitKey (5) va 0XFF
agar k == 27: tanaffus
cv2.destroyAllWindows ()
cap.release ()
2 -qadam: Ob'ekt harakatlanadigan yo'lni aniqlang
yo'lni kuzatish uchun:
i uchun diapazonda (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt (((markaziy nuqtalar [i - 1] [0] - markaziy nuqtalar [0]) ** 2) + ((markaziy nuqtalar [i - 1] [1] - markaziy nuqtalar [1]) ** 2)) <= 50: cv2.line (ramka, markaziy nuqtalar [i - 1], markaziy nuqtalar , (b, g, r), 4)
3 -qadam: Ikkala kodni ham birlashtirish
Men ikkala kodni ham birlashtirmoqchiman
import cv2import numpy sifatida np import tasodifiy to'plamlardan import deque
cap = cv2. VideoCapture (1)
# Ob'ekt tashrif buyurgan barcha nuqtalarni kuzatib borish uchun center_points = deque ()
rost bo'lsa:
# Kadrni o'qing va aylantiring _, frame = cap.read () frame = cv2.flip (frame, 1)
# Ramkani biroz xiralashtiring
blur_frame = cv2. Gausscha Blur (ramka, (7, 7), 0)
# BGR -dan HSV rang formatiga o'tkazish
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Aniqlash uchun hsv rangining pastki va yuqori diapazonini aniqlang. Bu erda ko'k
pastki_korang = np.array ([100, 50, 50]) yuqori_kuv = np.array ([140, 255, 255]) niqob = cv2.inRange (hsv, pastki_kor, yuqori_kor)
# Elliptik yadro yarating
yadro = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Morfning ochilishi (eroziya, keyin kengayish)
niqob = cv2.morphologyEx (niqob, cv2. MORPH_OPEN, yadro)
# Barcha konturlarni toping
konturlar, ierarxiya = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
agar len (konturlar)> 0:
# Eng katta konturni toping eng katta_kontur = maksimal
# Kontur markazini toping va to'ldirilgan aylana chizing
moment = cv2.moments (eng katta_kontur) centre_of_contour = (int (lahzalar ['m10'] / lahzalar ['m00'])), int (lahzalar ['m01'] / lahzalar ['m00'])) cv2. aylana (ramka), centre_of_contour, 5, (0, 0, 255), -1)
# Konturni aylana bilan bog'lab qo'ying
ellips = cv2.fitEllipse (eng katta_kontur) cv2.ellipse (ramka, ellips, (0, 255, 255), 2)
# Kontur markazini saqlang, shunda biz uni kuzatuvchi chiziq chizamiz
center_points.appendleft (kontur markazi_kabi)
# Konturning markaziy nuqtalaridan chiziq chizish
i uchun diapazonda (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt (((markaziy nuqtalar [i - 1] [0] - markaziy nuqtalar [0]) ** 2) + ((markaziy nuqtalar [i - 1] [1] - markaziy nuqtalar [1]) ** 2)) <= 50: cv2.line (ramka, markaziy nuqtalar [i - 1], markaziy nuqtalar , (b, g, r), 4)
cv2.imshow ("asl", ramka)
cv2.imshow ("niqob", niqob)
k = cv2.waitKey (5) va 0xFF
agar k == 27: tanaffus
cv2.destroyAllWindows ()
cap.release ()
Tavsiya:
Arduino, Gmail orqali eshik ochilishini kuzatish: 6 qadam
Arduino, Gmail orqali eshiklarning ochilishini kuzatish: Men sizga bu eshikni ochish hodisasini aniqlash va Arduino Uno yordamida Gmail orqali bildirishnoma yuborishni ko'rsataman. Arduino -da - WiFi va Arduino - eshik sensori darsliklari. Keling
VR uchun bosh harakatini kuzatish tizimi: 8 qadam
VR uchun bosh harakatini kuzatish tizimi: Mening ismim Sam KODO, bu darsda men sizga Arduino IMU sensorlaridan VR uchun bosh kuzatuv tizimini yaratish uchun qanday qadamma -qadam o'rgataman. Bu loyihada sizga kerak bo'ladi: - HDMI LCD displey. : https: //www.amazon.com/Elecrow-Capacitive-interfac … … va
Raspberry Pi - OpenCV ob'ektlarini kuzatish bilan avtonom Mars Rover: 7 qadam (rasmlar bilan)
Raspberry Pi - Ob'ektlarni kuzatish bilan avtonom Mars Rover: Raspberry Pi 3, ochiq rezyumelarni aniqlash, ultratovushli datchiklar va tishli shahar motorlari. Bu rover o'rgatilgan har qanday ob'ektni kuzatishi va istalgan erda harakatlanishi mumkin
Raspberry Pi ob'ektlarini sanash: 5 qadam
Raspberry Pi ob'ektlarini hisoblash: Kompyuterni ko'rish, shubhasiz, ajoyib narsa! Bundan foydalanib, kompyuter " ko'rish " va atrof -muhitni yaxshiroq his qilish, bu murakkab, foydali va ajoyib dasturlarni ishlab chiqishga imkon beradi. Fa kabi ilovalar
Kengaytirilgan haqiqatda AR ob'ektlarini GPS koordinatalariga joylashtirish: 8 qadam (rasmlar bilan)
Kengaytirilgan haqiqatda AR ob'ektlarini GPS koordinatalarida joylashtirish: Bu ko'rsatma Unity3D yordamida AR ob'ektlari va ARCore yordamida AR ob'ektlarini GPS koordinatalarida joylashtirish uchun mobil ilova yaratishni o'z ichiga oladi. Men sizga Mapbox -dan foydalanib, ma'lum bir G -da xabarlarni belgilashga imkon beradigan loyihani o'rnatish bo'yicha maslahat beraman