Isi kandungan:
- Langkah 1: Melukis Segi Empat pada Objek Yang Dikenali
- Langkah 2: Jejaki Jalan di mana Objek Bergerak
- Langkah 3: Menggabungkan Kedua-dua Kod
Video: Penjejakan Objek Opencv: 3 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Pengesanan objek bergerak adalah teknik yang digunakan dalam penglihatan komputer dan pemprosesan gambar. Beberapa bingkai berturut-turut dari video dibandingkan dengan pelbagai kaedah untuk menentukan sama ada objek bergerak dikesan.
Pengesanan objek bergerak telah digunakan untuk berbagai aplikasi seperti pengawasan video, pengenalan aktiviti, pemantauan keadaan jalan raya, keselamatan lapangan terbang, pemantauan perlindungan di sepanjang perbatasan laut dan lain-lain.
Pengesanan objek bergerak adalah mengenali pergerakan fizikal objek di tempat atau kawasan tertentu. [2] Dengan bertindak segmentasi di antara objek bergerak dan kawasan atau kawasan pegun, pergerakan objek bergerak dapat dikesan dan kemudian dapat dianalisis kemudian. Untuk mencapainya, pertimbangkan video adalah struktur yang dibangun di atas satu bingkai, pengesanan objek bergerak adalah untuk mencari sasaran bergerak latar depan, baik di setiap bingkai video atau hanya ketika sasaran bergerak menunjukkan penampilan pertama dalam video.
Saya akan menggunakan kombinasi Opnecv dan Python untuk mengesan dan mengesan objek berdasarkan warnanya
Langkah 1: Melukis Segi Empat pada Objek Yang Dikenali
jika komputer anda tidak mempunyai python atau opencv sila ikuti ini di bawah yang tidak dapat disekat
berikut adalah kod python:
import cv2import numpy sebagai np
cap = cv2. VideoCapture (0)
Walaupun Betul:
_, frame = cap.read () hsv = cv2.cvtColor (bingkai, cv2. COLOR_BGR2HSV)
low_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:
area = cv2.contourArea (kontur)
jika (kawasan> 800):
x, y, w, h = cv2.boundingRect (contour) frame = cv2. segi empat tepat (bingkai, (x, y), (x + w, y + h), (0, 0, 255), 10)
cv2.imshow ("penjejakan", bingkai)
k = cv2.waitKey (5) & 0XFF
jika k == 27: rehat
cv2.destroyAllWindows ()
cap.release ()
Langkah 2: Jejaki Jalan di mana Objek Bergerak
untuk mengesan jalan:
untuk i dalam julat (1, len (titik_ tengah)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) jika 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: Menggabungkan Kedua-dua Kod
saya akan menggabungkan kedua-dua kod tersebut
import cv2import numpy sebagai np import rawak dari koleksi import deque
cap = cv2. VideoCapture (1)
# Untuk melacak semua titik di mana objek dikunjungi center_points = deque ()
Walaupun Betul:
# Baca dan balikkan bingkai _, bingkai = cap.read () bingkai = cv2.flip (bingkai, 1)
# Kaburkan bingkai sedikit
blur_frame = cv2. GussianBlur (bingkai, (7, 7), 0)
# Tukar dari BGR ke format warna HSV
hsv = cv2.cvtWarna (bingkai kabur, cv2. COLOR_BGR2HSV)
# Tentukan julat warna hsv yang lebih rendah dan atas untuk dikesan. 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))
# Morph pembukaan (hakisan diikuti oleh pelebaran)
mask = cv2.morphologyEx (topeng, cv2. MORPH_OPEN, kernel)
# Cari semua kontur
kontur, hierarki = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [- 2:]
jika len (kontur)> 0:
# Cari kontur terbesar_kontur terbesar = maks (kontur, kunci = cv2.contourArea)
# Cari pusat kontur dan lukis bulatan yang penuh
momen = cv2.moments (terbesar_contour) centre_of_contour = (int (momen ['m10'] / momen ['m00']), int (momen ['m01'] / momen ['m00'])) cv2.circle (bingkai, centre_of_contour, 5, (0, 0, 255), -1)
# Ikatan kontur dengan bulatan
elips = cv2.fitEllipse (terbesar_contour) cv2. elips (bingkai, elips, (0, 255, 255), 2)
# Simpan bahagian tengah kontur sehingga kita melukis garis yang mengesannya
center_points.appendleft (centre_of_contour)
# Lukis garis dari titik tengah kontur
untuk i dalam julat (1, len (titik_ tengah)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) jika 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 tengah [i - 1], titik tengah , (b, g, r), 4)
cv2.imshow ('original', bingkai)
cv2.imshow ('topeng', topeng)
k = cv2.waitKey (5) & 0xFF
jika k == 27: rehat
cv2.destroyAllWindows ()
cap.release ()
Disyorkan:
Mikro: bit MU Vision Sensor - Penjejakan Objek: 7 Langkah
Mikro: bit MU Vision Sensor - Penjejakan Objek: Oleh itu, dalam arahan ini kita akan mula memprogramkan Smart Car yang kita buat di instruksional ini dan kita memasang sensor penglihatan MU di instruksional ini. Kita akan memprogram mikro: sedikit dengan beberapa penjejakan objek yang mudah, jadi
Mikro: bit MU Vision Sensor - Objek Penjejakan: 6 Langkah
Mikro: bit MU Vision Sensor - Objek Pelacakan: Ini adalah panduan keempat saya untuk sensor penglihatan MU untuk mikro: bit. Di sini saya akan melalui cara mengesan objek dengan mikro: bit dan menulis koordinat ke skrin OLED. Dalam panduan saya yang lain, saya telah melalui cara menyambungkan mikro: bit ke
Penjejakan Objek Berasaskan Pengesanan Warna: 10 Langkah
Penjejakan Objek Berasaskan Pengesanan Warna: Kisah Saya melakukan projek ini untuk belajar memproses gambar menggunakan Raspberry PI dan membuka CV. Untuk menjadikan projek ini lebih menarik, saya menggunakan dua motor SG90 Servo dan memasang kamera di atasnya. Satu motor digunakan untuk bergerak secara mendatar dan motor kedua digunakan untuk menggerakkan verticall
Raspberry Pi - Autonomous Mars Rover Dengan Penjejakan Objek OpenCV: 7 Langkah (dengan Gambar)
Raspberry Pi - Autonomous Mars Rover Dengan Penjejakan Objek OpenCV: Dikuasakan oleh Raspberry Pi 3, Pengenalan objek Open CV, sensor Ultrasonik dan motor DC yang diarahkan. Rover ini dapat mengesan objek yang dilatihnya dan bergerak di medan mana pun
Penjejakan Objek - Kawalan Pemasangan Kamera: 4 Langkah
Penjejakan Objek - Kawalan Pemasangan Kamera: Halo semua, Dalam Instruksional ini, saya akan menunjukkan kepada anda kemajuan yang dibuat untuk Projek Penjejakan Objek saya. Di sini anda boleh menemui Instruksional sebelumnya: https://www.instructables.com/id/Object-Tracking/ dan di sini anda dapat mencari senarai main youtube dengan semua