İçindekiler:
- Adım 1: Tanınan Nesneye Dikdörtgen Çizmek
- 2. Adım: Cismin Hareket Ettiği Yolun İzini Çıkarın
- Adım 3: Her İki Kodu da Entegre Etme
Video: Opencv Nesne Takibi: 3 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Hareketli nesne algılama, bilgisayarla görme ve görüntü işlemede kullanılan bir tekniktir. Bir videodan gelen birden fazla ardışık kare, herhangi bir hareketli nesnenin algılanıp algılanmadığını belirlemek için çeşitli yöntemlerle karşılaştırılır.
Hareketli nesnelerin tespiti, video gözetimi, aktivite tanıma, yol durumu izleme, havaalanı güvenliği, deniz sınırı boyunca koruma izleme vb. gibi çok çeşitli uygulamalar için kullanılmıştır.
Hareketli nesne algılama, belirli bir yer veya bölgedeki bir nesnenin fiziksel hareketini tanımaktır.[2] Hareketli nesneler ve sabit alan veya bölge arasında bölütleme yaparak, hareketli nesnelerin hareketi izlenebilir ve böylece daha sonra analiz edilebilir. Bunu başarmak için, bir videoyu tek kareler üzerine inşa edilmiş bir yapı olarak düşünün, hareketli nesne algılama, her video karesinde veya yalnızca hareketli hedef videoda ilk görünümü gösterdiğinde ön plandaki hareketli hedefleri bulmaktır.
Renge göre nesneleri algılamak ve izlemek için Opnecv ve Python kombinasyonunu kullanacağım
Adım 1: Tanınan Nesneye Dikdörtgen Çizmek
PC'nizde python veya opencv yoksa lütfen aşağıdaki talimatları izleyin
işte piton kodu:
cv2import numpy'yi np olarak içe aktar
cap = cv2. VideoCapture(0)
Doğru iken:
_, çerçeve = cap.read() hsv = cv2.cvtColor(çerçeve, cv2. COLOR_BGR2HSV)
alt_yellow = np.dizi([20, 110, 110])
üst_yellow = np.dizi([40, 255, 255])
yellow_mask = cv2.inRange(hsv, alt_yellow, üst_yellow)
(_, konturlar, _) = cv2.findContours(yellow_mask, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
konturlarda kontur için:
alan = cv2.contourArea(kontur)
if(alan > 800):
x, y, w, h = cv2.sınırlamaDik(kontur) çerçevesi = cv2.dikdörtgen(çerçeve, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow("izleme", çerçeve)
k = cv2.waitKey(5) & 0XFF
k == 27 ise: ara
cv2.destroyAllWindows()
cap.release()
2. Adım: Cismin Hareket Ettiği Yolun İzini Çıkarın
yolu izlemek için:
i için aralık(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(çerçeve, merkez_noktaları[i - 1], merkez_noktaları, (b, g, r), 4)
Adım 3: Her İki Kodu da Entegre Etme
her iki kodu da entegre edeceğim
cv2import numpy'yi np olarak içe aktar koleksiyonlardan rastgele içe aktar
cap = cv2. VideoCapture(1)
# Nesnenin ziyaret ettiği tüm noktaları takip etmek için center_points = deque()
Doğru iken:
# Çerçeveyi oku ve çevir _, çerçeve = cap.read() çerçeve = cv2.flip(çerçeve, 1)
# Çerçeveyi biraz bulanıklaştırın
blur_frame = cv2. GaussianBlur(çerçeve, (7, 7), 0)
# BGR'den HSV renk formatına dönüştürme
hsv = cv2.cvtColor(blur_frame, cv2. COLOR_BGR2HSV)
# Algılanacak hsv renginin alt ve üst aralığını tanımlayın. Burada mavi
alt_mavi = np.array([100, 50, 50]) üst_mavi = np.array([140, 255, 255]) mask = cv2.inRange(hsv, alt_mavi, üst_mavi)
# Eliptik çekirdek yapın
çekirdek = cv2.getStructuringElement(cv2. MORPH_ELLIPSE, (15, 15))
# Açılış morfu (erozyon ve ardından genişleme)
maske = cv2.morphologyEx(maske, cv2. MORPH_OPEN, çekirdek)
# Tüm konturları bul
konturlar, hiyerarşi = cv2.findContours(mask.copy(), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE)[-2:]
len(konturlar) > 0 ise:
# En büyük konturu bulun en büyük_contour = max(contours, key=cv2.contourArea)
# Konturun merkezini bulun ve dolu daire çizin
momentler = cv2.moments(biggest_contour) center_of_contour = (int(moments['m10'] / momentler['m00']), int(moments['m01'] / momentler['m00'])) cv2.circle(frame, kontur merkezi, 5, (0, 0, 255), -1)
# Konturu daire ile bağla
elips = cv2.fitEllipse(biggest_contour) cv2.ellipse(çerçeve, elips, (0, 255, 255), 2)
# Konturun merkezini kaydedin, böylece onu takip eden çizgi çizelim
center_points.appendleft(centre_of_contour)
# Konturun merkez noktalarından çizgi çizin
i için aralık(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(çerçeve, merkez_noktaları[i - 1], merkez_noktaları, (b, g, r), 4)
cv2.imshow('orijinal', çerçeve)
cv2.imshow('maske', maske)
k = cv2.waitKey(5) & 0xFF
k == 27 ise: ara
cv2.destroyAllWindows()
cap.release()
Önerilen:
Nesne Yönelimli Programlama: Nesne Oluşturma Şekil Delgeç Kullanarak Öğrenme/Öğretme Yöntemi/Tekniği: 5 Adım
Nesneye Yönelik Programlama: Nesneler Oluşturma Shape Punch Kullanarak Öğrenme/Öğretme Yöntemi/Tekniği: Nesne yönelimli programlamaya yeni başlayan öğrenciler için öğrenme/öğretme yöntemi. Bu, sınıflardan nesne oluşturma sürecini görselleştirmelerine ve görmelerine izin vermenin bir yoludur. Parçalar:1. EkTools 2 inç büyük zımba; katı şekiller en iyisidir.2. Kağıt parçası veya c
Renk Algılama Tabanlı Nesne Takibi: 10 Adım
Renk Algılamaya Dayalı Nesne Takibi: Öykü Bu projeyi Raspberry PI ve açık CV kullanarak görüntü işlemeyi öğrenmek için yaptım. Bu projeyi daha ilginç hale getirmek için iki adet SG90 Servo motor kullandım ve üzerine kamera monte ettim. Bir motor yatay olarak hareket etmek için kullanılırken, ikinci motor dikey olarak hareket etmek için
Raspberry Pi - OpenCV Nesne Takibi ile Otonom Mars Gezgini: 7 Adım (Resimlerle)
Raspberry Pi - OpenCV Nesne Takipli Otonom Mars Gezgini: Bir Raspberry Pi 3, Açık CV nesne tanıma, Ultrasonik sensörler ve dişli DC motorlar ile güçlendirilmiştir. Bu gezici, eğitildiği herhangi bir nesneyi takip edebilir ve herhangi bir arazide hareket edebilir
Nesne Yönelimli Programlama: Nesne Oluşturma Makas Kullanarak Öğrenme/Öğretme Yöntemi/Tekniği: 5 Adım
Nesne Yönelimli Programlama: Nesne Oluşturma Öğrenme/Öğretme Yöntemi/Teknik Makas Kullanarak: Nesne yönelimli programlamaya yeni başlayan öğrenciler için öğrenme/öğretme yöntemi. Bu onların sınıflardan nesne yaratma sürecini görselleştirmelerine ve görmelerine izin vermenin bir yoludur. Parçalar: 1. Makas (her türlü olur). 2. Kağıt veya karton parçası. 3. İşaretleyici.
OpenCV ve Tensorflow Kullanarak Dragonboard 410c veya 820c ile Nesne Algılama: 4 Adım
OpenCV ve Tensorflow Kullanarak Dragonboard 410c veya 820c ile Nesne Algılama: Bu talimat, Nesne Algılama uygulamasını çalıştırmak için Python 3.5 için OpenCV, Tensorflow ve makine öğrenimi çerçevelerinin nasıl kurulacağını açıklar