Daftar Isi:
- Langkah 1: Menggambar Persegi Panjang pada Objek yang Diakui
- Langkah 2: Menelusuri Jalur Di Mana Objek Telah Bergerak
- Langkah 3: Mengintegrasikan Kedua Kode
Video: Pelacakan Objek Opencv: 3 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Deteksi objek bergerak adalah teknik yang digunakan dalam visi komputer dan pemrosesan gambar. Beberapa frame berurutan dari video dibandingkan dengan berbagai metode untuk menentukan apakah ada objek bergerak yang terdeteksi.
Deteksi objek bergerak telah digunakan untuk berbagai aplikasi seperti pengawasan video, pengenalan aktivitas, pemantauan kondisi jalan, keamanan bandara, pemantauan perlindungan di sepanjang perbatasan laut dan lain-lain.
Deteksi objek bergerak adalah untuk mengenali pergerakan fisik suatu objek di suatu tempat atau wilayah tertentu.[2] Dengan melakukan segmentasi antara objek bergerak dan area atau wilayah diam, gerakan objek bergerak dapat dilacak dan dengan demikian dapat dianalisis nanti. Untuk mencapai ini, anggap video adalah struktur yang dibangun di atas bingkai tunggal, deteksi objek bergerak adalah menemukan target bergerak di latar depan, baik di setiap bingkai video atau hanya ketika target bergerak menunjukkan penampilan pertama dalam video.
Saya akan menggunakan kombinasi Opnecv dan Python untuk mendeteksi dan melacak objek berdasarkan warnanya
Langkah 1: Menggambar Persegi Panjang pada Objek yang Diakui
jika pc Anda tidak memiliki python atau opencv, ikuti instruksi di bawah ini
ini kode pythonnya:
impor cv2import numpy sebagai np
tutup = cv2. VideoCapture(0)
sementara Benar:
_, bingkai = cap.read() hsv = cv2.cvtColor(bingkai, cv2. COLOR_BGR2HSV)
lower_yellow = np.array([20, 110, 110])
upper_yellow = np.array([40, 255, 255])
yellow_mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
(_, kontur, _) = cv2.findContours(yellow_mask, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
untuk kontur dalam kontur:
luas = cv2.contourArea(kontur)
jika (luas > 800):
x, y, w, h = cv2.boundingRect(kontur) frame = cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow("pelacakan", bingkai)
k = cv2.waitKey(5) & 0XFF
jika k == 27: break
cv2.destroySemuaWindows()
tutup.rilis()
Langkah 2: Menelusuri Jalur Di Mana Objek Telah Bergerak
untuk melacak jalur:
untuk i in range(1, len(center_points)): b = random.randint(230, 255) g = random.randint(100, 255) r = random.randint(100, 255) if math.sqrt(((center_points[i - 1][0] - center_points[0]) ** 2) + ((center_points[i - 1][1] - center_points[1]) ** 2)) <= 50: cv2.line(bingkai, titik_pusat[i - 1], titik_pusat, (b, g, r), 4)
Langkah 3: Mengintegrasikan Kedua Kode
saya akan mengintegrasikan kedua kode
import cv2import numpy as np import random from collections import deque
tutup = cv2. VideoCapture(1)
# Untuk melacak semua titik di mana objek dikunjungi center_points = deque()
sementara Benar:
# Membaca dan membalik frame _, frame = cap.read() frame = cv2.flip(frame, 1)
# Buramkan bingkai sedikit
blur_frame = cv2. GaussianBlur(bingkai, (7, 7), 0)
# Konversi dari format warna BGR ke HSV
hsv = cv2.cvtColor(blur_frame, cv2. COLOR_BGR2HSV)
# Tentukan rentang warna hsv yang lebih rendah dan lebih tinggi untuk dideteksi. Biru di sini
lower_blue = np.array([100, 50, 50]) upper_blue = np.array([140, 255, 255]) mask = cv2.inRange(hsv, lower_blue, upper_blue)
# Buat kernel elips
kernel = cv2.getStructuringElement(cv2. MORPH_ELLIPSE, (15, 15))
# Morf pembukaan (erosi diikuti oleh pelebaran)
topeng = cv2.morphologyEx(masker, cv2. MORPH_OPEN, kernel)
# Temukan semua kontur
kontur, hierarki = cv2.findContours(mask.copy(), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE)[-2:]
jika len(kontur) > 0:
# Temukan kontur terbesar terbesar_kontur = max(kontur, kunci=cv2.contourArea)
# Temukan pusat kontur dan gambar lingkaran penuh
momen = cv2.moments(biggest_contour) center_of_contour = (int(moments['m10'] / momen['m00']), int(moments['m01'] / momen['m00'])) cv2.circle(frame, center_of_contour, 5, (0, 0, 255), -1)
# Ikat kontur dengan lingkaran
elips = cv2.fitEllipse(kontur_terbesar) cv2.ellipse(bingkai, elips, (0, 255, 255), 2)
# Simpan bagian tengah kontur sehingga kami menggambar garis yang melacaknya
center_points.appendleft(center_of_contour)
# Gambar garis dari titik tengah kontur
untuk i in range(1, len(center_points)): b = random.randint(230, 255) g = random.randint(100, 255) r = random.randint(100, 255) if math.sqrt(((center_points[i - 1][0] - center_points[0]) ** 2) + ((center_points[i - 1][1] - center_points[1]) ** 2)) <= 50: cv2.line(bingkai, titik_pusat[i - 1], titik_pusat, (b, g, r), 4)
cv2.imshow('asli', bingkai)
cv2.imshow('topeng', topeng)
k = cv2.waitKey(5) & 0xFF
jika k == 27: break
cv2.destroySemuaWindows()
tutup.rilis()
Direkomendasikan:
Micro:bit MU Vision Sensor - Pelacakan Objek: 7 Langkah
Micro:bit MU Vision Sensor - Object Tracking: Jadi dalam instruksi ini kita akan mulai memprogram Mobil Pintar yang kita buat di instruksi ini dan bahwa kita memasang sensor visi MU di instruksi ini. Kita akan memprogram mikro: sedikit dengan beberapa pelacakan objek sederhana, jadi
Micro:bit MU Vision Sensor - Pelacakan Objek: 6 Langkah
Sensor Penglihatan MU Mikro:bit - Objek Pelacakan: Ini adalah panduan keempat saya untuk sensor penglihatan MU untuk mikro:bit. Di sini saya akan membahas cara melacak objek dengan mikro:bit dan menulis koordinat ke layar OLED. Saya memiliki panduan saya yang lain melalui cara menghubungkan mikro: bit ke
Pelacakan Objek Berbasis Deteksi Warna: 10 Langkah
Pelacakan Objek Berbasis Deteksi Warna: Cerita Saya melakukan proyek ini untuk mempelajari pemrosesan gambar menggunakan Raspberry PI dan membuka CV. Untuk membuat proyek ini lebih menarik saya menggunakan dua motor Servo SG90 dan memasang kamera di atasnya. Satu motor digunakan untuk bergerak horizontal dan motor kedua digunakan untuk bergerak vertikal
Raspberry Pi - Rover Mars Otonom Dengan Pelacakan Objek OpenCV: 7 Langkah (dengan Gambar)
Raspberry Pi - Autonomous Mars Rover Dengan Pelacakan Objek OpenCV: Didukung oleh Raspberry Pi 3, Pengenalan objek CV Terbuka, Sensor ultrasonik, dan motor DC yang diarahkan. Penjelajah ini dapat melacak objek apa pun yang dilatihnya dan bergerak di medan apa pun
Slider Kamera Pelacakan Objek Dengan Sumbu Rotasi. 3D Dicetak & Dibangun di RoboClaw DC Motor Controller & Arduino: 5 Langkah (dengan Gambar)
Slider Kamera Pelacakan Objek Dengan Sumbu Rotasi. 3D Dicetak & Dibangun di RoboClaw DC Motor Controller & Arduino: Proyek ini telah menjadi salah satu proyek favorit saya sejak saya menggabungkan minat saya membuat video dengan DIY. Saya selalu melihat dan ingin meniru bidikan sinematik dalam film di mana kamera bergerak melintasi layar sambil menggeser untuk melacak